IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Description of Objects in VPython

Contrôles: boutons (button), glissières (slider), interrupteurs à bascule (toggle), et menus déroulant (menu)

Vous pouvez créer des boutons, glissières, interrupteurs à bascule et menus déroulant pour contrôler votre programme. Vous importez ces possibilités avec l'instruction:

from visual.controls import *

L'importation de visual.controls rend disponible tous les objets Visual ainsi que le module controls. Pour utiliser les caractéristiques des contrôles, créez une fenêtre spéciale pour, les contrôles et ajoutez les contrôles sur cette fenêtre, en spécifiant quelles actions devraient prendre place quand les contrôles sont manipulés. Par exemple, une action associée à un bouton peut être exécutée à partir d'une fonction pour changer la couleur d'un objet Visual. Après avoir créé des contrôles, appelez de nombreuses fois une routine interactive pour vérifier la manipulation de l'utilisateur des contrôles qui déclenchent les actions. Pour un exemple détaillé, regardez le programme de démonstration VPython controlstest.py.

Voici un petit exemple. Ceci change le texte du bouton quand vous cliquez sur celui-ci. La construction Python "lambda:" est nécessaire pour le module controls pour avoir un contexte correct ("espace de nom") pour l'appel de la routine spéficiée.

from visual.controls import *

 

def change(): # Appelé par controls quand on clique sur le bouton

    if b.text == 'Click me':

        b.text = 'Try again'

    else:

        b.text = 'Click me'

 

c = controls() # Crée une fenêtre pour les contrôles

# Crée un bouton dans la fenêtre des contrôles:

b = button( pos=(0,0), width=60, height=60,

              text='Click me', action=lambda: change() )

while 1:

    c.interact() # Vérifie les évènements de la souris et déclenche les actions spécifiées.

 

La fenêtre des contrôles

controls() Crée une fenêtre pour les contrôles avec des attributs spécifiés et la retourne. Par exemple, la suite crée une fenêtre 300 par 300, positionnée à (0,400) en respectant le coin haut gauche de l'écran, avec 'Controlling the Scene' dans la barre de titre et une étendue de 50 (les coordonnées de la fenêtre vont de -50 à +50 en x et y):

c = controls(title='Controlling the Scene',

     x=0, y=400, width=300, height=300, range=50)

Les paramètres de la fenêtre des contrôles

x, y Position de la fenêtre sur l'écran (pixel en haut à gauche)

width, height Largeur et hauteur de la zone d'affichage en pixels.

title Texte dans la barre de titre de la fenêtre des contrôles.

range L'étendue de la région d'intérêt à partir du centre et le long de chaque axe. La valeur par défaut est 100. Le centre de la fenêtre des contrôles est toujours (0,0).

Les contrôles

Après avoir créé une fenêtre pour les contrôles, vous pouvez créer les contrôles suivants qui apparaîtront dans cette fenêtre:

button Un bouton pour cliquer.

slider Réglez une glissière pour entrer graphiquement une valeur numérique.

toggle Cliquez sur le levier pour basculer un interrupteur.

menu Un menu déroulant à options.

Les contrôles ont les attributs suivants:

pos Position du contrôle (centre du bouton ou de l'interrupteur, une des extrémités de la glissière, le coin en haut à gauche du titre du menu)

color Gris par défaut

width Largeur du bouton, de l'interrupteur ou du menu

height Hauteur du bouton, de l'interrupteur ou du menu

axis Axe pour la glissière, pointant de pos à l'autre extrémité (comme pour le cylindre ou la flèche)

length Longueur de la glissière (dans la direction de l'axe)

min, max Valeurs minimales et maximales pour une glissière

value Valeur de l'interrupteur (0 ou 1) ou de la glissière (dependant du min et du max spécifiés). L'attribut value de l'interrupteur ou de la glissière peut être écrit aussi bien que lu. Si vous définissez la valeur de l'interrupteur ou de la glissière, le contrôle se déplacera à la position qui correspond à cette valeur.

text Texte à afficher sur un bouton ou le titre du menu

text0 Texte à afficher en dessous d'un interrupteur à bascule (associé à la valeur 0 de l'interrupteur)

text1 Texte à afficher au-dessus d'un interrupteur à bascule (associé à la valeur 1 de l'interrupteur)

action Spécifie une commande Python à exécuter lorsqu'un contrôle est manipulé

items Pour les menus seulement, liste des options à sélectionner. Voici un exemple qui montre comment ajouter une option à un menu nommé m1:

        m1.items.append( ('Red', lambda: cubecolor(color.red)) )

Ceci ajoute au menu déroulant une option 'Red' qui fera passer la valeur color.red à la sous-routine cubecolor(). La contruction Python "lambda:" est nécessaire pour le module controls pour avoir un contexte correct ("espace de nom") pour appeler la routine spécifiée.

 



Copyright © 2006 Guillaume et Yoann Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.