Move the ball

Bonjour,

Comment faire pour ne pas que le point rouge ne sorte pas du cadre ? from tkinter import *

def KeyBoard(event):
    global PosX,PosY
    Key = event.keysym
    if Key == 'Up':
        PosY -= 20
    if Key == 'Down':
        PosY -= 20
    if Key == 'Right':
        PosX -= 20
    if Key == 'Left':
        PosX -= 20
    MyCanvas.coords(Piece,PosX -10, PosY -10, PosX +10, PosY +10)

MyWindow = Tk()
MyWindow.title('Piece')

PosX = 230
PosY = 150

MyCanvas = Canvas(MyWindow, width = 480, height =320, bg ='white')
Piece = MyCanvas.create_oval(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='red')
MyCanvas.focus_set()
MyCanvas.bind('<Key>',KeyBoard)
MyCanvas.pack(padx =50, pady =50)

Button(MyWindow, text ='Exit', command = MyWindow.destroy).pack(side=LEFT,padx=5,pady=5)

MyWindow.mainloop()


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    En testant posx et posy par rapport aux dimensions du canvas, juste avant l'instruction de mise à jour des coordonnées
    1. Bonjour

      Merci pour ton retour.

      Si j'ai bien compris, il suffit de supprimer la ligne:

      from tkinter import *

      Cdlt
      1. Modérateur
        Bonjour, "Si j'ai bien compris" , non absolument pas ;-)

        Tu devrais tranquillement relire la réponse de Phil_1857. La décortiquer, l'analyser, la soupeser ...
    2. Surtout pas !

      from tkinter import *, c'est ce qui permet d'importer les module de la biblothèque tkinter,

      pour créer des objets comme les boutons ou les canevas ...

      Tu sait ce que tu fais, au moins ?

      C'est toi qui a écrit ce code ?
      1. Bonjour,

        En plus, ton code ne marche pas comme il le devrait:

        que la touche soit Up ou Down, tu soustrait toujours 20

        idem pour Left et Right ...