Bonjour,
(J'utilise python 3.3 sous windows 8)
Je suis confronté au problème suivant: la méthode "bind" ne fonctionne que si le widget associé est la fenêtre elle même. Exemples:
Mais celui-là non...(can à la place de root)
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 # ce code fonctionne (si on appuie sur la touche y, la balle se déplace) from tkinter import* def change_position(event): global balle can.coords(balle,50,50,60,60) root=Tk() can=Canvas(root, width=100, height=100, bg='blue') can.pack() balle=can.create_oval(0,0,10,10, fill='red') root.bind("y", change_position) mainloop()
où encore (Frame à la place de Tk):
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 from tkinter import* def change_position(event): global balle can.coords(balle,50,50,60,60) root=Tk() can=Canvas(root, width=100, height=100, bg='blue') can.pack() balle=can.create_oval(0,0,10,10, fill='red') can.bind("y", change_position) # can à la place de root # mainloop()
Je ne comprends pas pourquoi...et les tutoriels classiques ne parlent pas de ce problème, tous les widgets devraient fonctionner. Cela me gêne dans un programme plus important où je suis obligé de créer ma fenêtre de départ avec tk et non comme Frame. De plus, je dois transmettre aux classes systématiquement le "master" pour que bind marche.
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 from tkinter import* def change_position(event): global balle can.coords(balle,50,50,60,60) root=Frame() #Frame à la place de Tk # can=Canvas(root, width=100, height=100, bg='blue') can.pack() balle=can.create_oval(0,0,10,10, fill='red') root.bind("y", change_position) mainloop()
Merci de votre aide
Partager