« Programmation Python/Classes et Interfaces graphiques » : différence entre les versions

Contenu supprimé Contenu ajouté
typo
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 36 :
Au niveau principal du programme, nous nous contentons d'instancier un objet de la classe ainsi construite (aucune méthode de cet objet n'est activée de l'extérieur).
 
<sourcesyntaxhighlight lang=python line>
class Application:
def __init__(self):
Ligne 105 :
from math import log10 # logarithmes en base 10
f = Application() # instanciation de l'objet application
</syntaxhighlight>
</source>
 
;Commentaires
Ligne 171 :
;Implémentation
 
<sourcesyntaxhighlight lang=python line>
from Tkinter import *
 
Ligne 226 :
app = Application()
app.mainloop()
</syntaxhighlight>
</source>
 
;Commentaires
Ligne 259 :
<ol>
<li>
<sourcesyntaxhighlight lang=python line>
from Tkinter import *
 
Ligne 326 :
 
Application().app.mainloop()
</syntaxhighlight>
</source>
</li>
</ol>
Ligne 347 :
Veuillez donc encoder le script ci-dessous et le sauvegarder dans un fichier, auquel vous donnerez le nom <code>oscillo.py</code>. Vous réaliserez ainsi un véritable ''module'' contenant une classe (vous pourrez par la suite ajouter d'autres classes dans ce même module, si le cœur vous en dit).
 
<sourcesyntaxhighlight lang=python line>
from Tkinter import *
from math import sin, pi
Ligne 389 :
gra.traceCourbe(2, 1.2, 10, 'purple')
root.mainloop()
</syntaxhighlight>
</source>
Le niveau principal du script est constitué par les lignes 35 à 41. Les lignes de code situées après l'instruction <code>if __name__ == '__main__':</code> ne sont pas exécutées si le script est importé en tant que module. Si on lance le script comme application principale, par contre, ces instructions sont exécutées.
Ligne 513 :
Le petit script ci-dessous vous montre comment le paramétrer et l'utiliser dans une fenêtre :
 
<sourcesyntaxhighlight lang=python line>
from Tkinter import *
 
Ligne 528 :
 
root.mainloop()
</syntaxhighlight>
</source>
 
Ces lignes ne nécessitent guère de commentaires.
Ligne 548 :
[[Image:Apprendre à programmer avec Python 44.png|center]]
 
<sourcesyntaxhighlight lang=python line>
from Tkinter import *
from math import pi
Ligne 603 :
root.bind('<Control-Z>', afficherTout)
root.mainloop()
</syntaxhighlight>
</source>
 
Ce panneau de contrôle permettra à vos utilisateurs de régler aisément la valeur des paramètres indiqués (fréquence, phase et amplitude), lesquels pourront alors servir à commander l'affichage de graphiques élongation/temps dans un ''widget'' de la classe <code>OscilloGraphe()</code> construite précédemment, comme nous le montrerons dans l'application de synthèse.
Ligne 689 :
Lorsque nous avons construit la classe de ''widgets'' <code>ChoixVibra()</code>, nous y avons donc incorporé les instructions nécessaires pour que de tels événements soient générés, chaque fois que l'utilisateur actionne l'un des curseurs ou modifie l'état de la case à cocher. Nous allons à présent définir le gestionnaire de cet événement et l'inclure dans notre nouvelle classe : nous l'appellerons <code>montreCourbes()</code> et il se chargera de rafraîchir l'affichage. Étant donné que l'événement concerné est du type <enfoncement d'une touche>, nous devrons cependant le détecter au niveau de la fenêtre principale de l'application.
 
<sourcesyntaxhighlight lang=python line>
from oscillo import *
from curseurs import *
Ligne 735 :
if __name__ == '__main__':
ShowVibra().mainloop()
</syntaxhighlight>
</source>
 
=== Commentaires ===
Ligne 822 :
Commencez par analyser ce script, et ajoutez-y des commentaires, en particulier aux lignes marquées : #*** , afin de montrer que vous comprenez ce que doit faire le programme à ces emplacements :
 
<sourcesyntaxhighlight lang=python>
from Tkinter import *
 
Ligne 881 :
Projet(500, 300).mainloop()
</syntaxhighlight>
</source>
 
Modifiez ensuite ce script, afin qu'il corresponde au cahier des charges suivant :
Ligne 906 :
<li>
[[Image:Apprendre à programmer avec Python 77.png|center|500px|capture d'écran de l'application]]
<sourcesyntaxhighlight lang=python>
# Dictionnaire de couleurs
from Tkinter import *
Ligne 1 001 :
if __name__ == '__main__':
Application().mainloop()
</syntaxhighlight>
</source>
</li>
<li>
(variante 3) :
<sourcesyntaxhighlight lang=python>
from Tkinter import *
from random import randrange
Ligne 1 092 :
Projet(600, 600).mainloop()
</syntaxhighlight>
</source>
</li>
</ol>