Tkinter et déplacement avec pression au clavier - Python - Programmation
Marsh Posté le 25-09-2005 à 12:27:12
Citation : The form of the bind method is:
|
Marsh Posté le 25-09-2005 à 14:52:03
hum, non, là j'ai simplement recopié la documentation tkinter située dans la doc python histoire de te montrer que tu n'utilises pas trop tk comme tu es censé le faire...
je te suggérerais donc, en concéquence, d'apprendre comment fonctionnent tkinter et python avant de demander pourquoi ce que tu fais ne fonctionne pas.
Et accessoirement t'as également oublié de demander l'affichage de ton canvas dans la frame principale, en utilisant grid ou pack.
Marsh Posté le 28-09-2005 à 12:18:48
Marsh Posté le 28-09-2005 à 12:20:38
quels nids
mais de quoi tu parles
Marsh Posté le 01-10-2005 à 14:10:26
je voulais dire les 'can.bind("z", fonction)' par exemple.
Marsh Posté le 05-10-2005 à 00:32:23
Je crois que le problème c'est que ton canvas n'a pas le focus. Essaie soit d'ajouter can.focus_set() ou alors utilise bind_all au lieu de bind.
Pour les touches fléchées et autres, tout est ici: http://infohost.nmt.edu/tcc/help/pubs/tkinter/
Marsh Posté le 05-10-2005 à 12:29:15
Merci beaucoup. Ca marche mais les direction sont complétemetnt buggées...
Marsh Posté le 06-10-2005 à 08:27:01
Haut et bas ne marchent qu'une fois ou alors il faut partir vers le bas pour pouvoir remonter vers le heut et vice-versa... Droite et Gauche partent en diagonale...
Marsh Posté le 08-10-2005 à 09:51:28
J'avais pas vu ça !!!!!!!!!!!!
Merci beaucoup, maintenant ça marche très bien.
Marsh Posté le 25-09-2005 à 11:45:35
A la base, j'avais ça:
from graph import *
def move(h, v):
global x, y
x, y = x+h, x+v
if x > 270:
x = 0
if x < 0:
x = 270
if y > 270:
y = 0
if y < 0:
y = 270
can.coords(rond, x, y, x+30, y+30)
x, y = 0, 0
fen= Tk()
fen.title("Le petit bonhomme" )
can=Canvas(fen, bg="grey", height=300, width=300)
rond=can.create_oval(x, y, x+30, y+30, width=2, fill="blue" )
can.bind("z", move(-10, 0))
can.bind("q", move(0, -10))
can.bind("d", move(0, 10))
can.bind("s", move(10, 0))
can.grid(row=0, column=0)
fen.mainloop()
je l'ai modifié en ça:
from graph import *
def movez(event):
move(-10, 0)
def moveq(event):
move(0, -10)
def moved(event):
move(0, 10)
def moves(event):
move(10, 0)
def move(h, v):
global x, y
x, y = x+h, x+v
if x > 270:
x = 0
if x < 0:
x = 270
if y > 270:
y = 0
if y < 0:
y = 270
can.coords(rond, x, y, x+30, y+30)
x, y = 0, 0
fen= Tk()
fen.title("Le petit bonhomme" )
can=Canvas(fen, bg="grey", height=300, width=300)
rond=can.create_oval(x, y, x+30, y+30, width=2, fill="blue" )
can.bind("z", movez)
can.bind("q", moveq)
can.bind("d", moved)
can.bind("s", moves)
can.grid(row=0, column=0)
fen.mainloop()
et ça marche toujours pas. Au fait, si vous trouvez ou ça va pas, vous pourriez m'aider à le faire avec les touches directionnelles ?
MErci d'avance.