2010-07-17 6 views
3

Je souhaite créer une fonction glisser-déposer pour un widget. Le code est le suivant:tkinter: glisser des widgets

from tkinter import * 


root = Tk() 
root.config(background = "red", width = 500, height = 500) 
root.title("root") 

def frameDrag(event): 
    frame.place(x = event.x , y = event.y) 

frame = Frame(root, width = 60, height = 30) 
frame.place(x=0, y=0) 
frame.bind("<B1-Motion>", frameDrag) 

root.mainloop() 

Fondamentalement, il devrait placer le widget à l'endroit où vous déplacez votre souris. Au lieu de cela, le widget saute partout dans la fenêtre. Des idées pour résoudre ce problème?

Répondre

1

Il saute dans tous les sens parce que vous dites à comme le montre:

def frameDrag(event): 
    print event.x, event.y 
    frame.place(x = event.x , y = event.y) 

Mieux vaut utiliser un widget toile et mieux utiliser B1-Click et les événements B1-Release et calculer le delta . Cherchez la démo de widget qui vient avec Tkinter.

Questions connexes