tkinter: перетаскивание виджетов - PullRequest
3 голосов
/ 17 июля 2010

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

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 Ответ

1 голос
/ 17 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...