Encore bonjour à tous. Je poursuis mon apprentissage de Python, et, tout impatient que je sois, je n'avance pas vite.
J'ai recopié hier ce programme je ne sais plus où (sur Internet, quand même) :
Clairement, il était prévu pour Python 2 : j'ai donc fait deux modifs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 # Petit exercice utilisant la bibliothèque graphique Tkinter from Tkinter import * from random import randrange # --- définition des fonctions gestionnaires d'événements : --- def drawline(): "Tracé d'une ligne dans le canevas can1" global x1, y1, x2, y2, coul can1.create_line(x1,y1,x2,y2,width=2,fill=coul) # modification des coordonnées pour la ligne suivante : y2, y1 = y2+10, y1-10 def changecolor(): "Changement aléatoire de la couleur du tracé" global coul pal=['purple','cyan','maroon','green','red','blue','orange','yellow'] c = randrange(8) # => génère un nombre aléatoire de 0 à 7 coul = pal[c] #------ Programme principal ------- # les variables suivantes seront utilisées de manière globale : x1, y1, x2, y2 = 10, 190, 190, 10 # coordonnées de la ligne coul = 'dark green' # couleur de la ligne # Création du widget principal ("maître") : fen1 = Tk() # création des widgets "esclaves" : can1 = Canvas(fen1,bg='dark grey',height=200,width=200) can1.pack(side=LEFT) bou1 = Button(fen1,text='Quitter',command=fen1.quit) bou1.pack(side=BOTTOM) bou2 = Button(fen1,text='Tracer une ligne',command=drawline) bou2.pack() bou3 = Button(fen1,text='Autre couleur',command=changecolor) bou3.pack() fen1.mainloop() # démarrage du réceptionnaire d'événements fen1.destroy() # destruction (fermeture) de la fenêtre
- ajouté la ligne # -*- coding: utf8 -*- au début,
- mis une minuscule à tkinter
Mais ça ne marche quand-même pas : si je dis d'ouvrir avec IDLE, ça ne s'ouvre pas, ça ne fait rien !! ; si je double clique sur le .py que j'ai créé chez moi (forcément, hein, pour le modifier...) je vois une fenêtre qui s'ouvre et qui se referme avant que j'ai rien pu y voir ; et si j'ouvre une fenêtre de commande que que je le lance avec Python, je vois ceci :
Or il n'y a pas de ligne : "fenetre = Tk()", ni au numéro 8 ni ailleurs dans ce programme là (la fenêtre est définie sous le nom "fen1" à la ligne 31 !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 D:\Projets\Python>python Cannevas.py Traceback (most recent call last): File "Cannevas.py", line 6, in <module> from tkinter import * File "D:\Projets\Python\tkinter.py", line 8, in <module> fenetre = Tk() NameError: name 'Tk' is not defined
Par contre, j'ai fait tourner récemment un programme à la structure tout à fait similaire, avec l'import tkinter, et bel et bien une ligne "fenetre = Tk()" (mais c'est à la ligne 105 !). Par acquis de conscience, je l'ai essayé, et il marche exactement comme je l'espère.
Si quelqu'un peut m'expliquer ce qui a bien pu se passer, je serai bien soulagé, car, pour le moment, je trouve que Python me fait des blagues pas drôles du tout.
Merci d'avance.
AMIcalement.
Partager