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.







Répondre avec citation
Partager