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) :

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
Clairement, il était prévu pour Python 2 : j'ai donc fait deux modifs :

- 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 :
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
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 !)

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.