2010-07-17 1 views
3

Я хотел бы сделать функцию drag-n-drop для виджета. Код:tkinter: перетаскивание виджетов

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

В принципе, он должен поместить виджет в место, куда вы перемещаете мышь. Вместо этого виджет перемещается по всему окну. Любые идеи, как это исправить?

ответ

1

Он прыгает повсюду, потому что вы говорите его, как показано:

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

Лучше использовать холст виджет и лучше использовать B1-Click и B1-релиз события и вычислить дельту , Ищите демо-версию виджета, которая поставляется вместе с Tkinter.

 Смежные вопросы

  • Нет связанных вопросов^_^