如何通过在Tkinter中拖动来重新着色多个小部件

时间:2013-01-21 14:03:14

标签: python widget tkinter drag

我正在尝试创建一个脚本,例如有9个小部件(按钮,标签......),当我点击并按住任何小部件时,我想要拖动另一个小部件,这两个小部件都要重新着色(相反,我拖过的所有小部件),直到我释放鼠标按钮。

from Tkinter import *

root = Tk()

def recolor(event):
    global ButtonList
    event.widget.config(bg="red")

    return


ButtonList=["b0","b1","b2","b3","b4","b5","b5","b6","b7","b8"]

i = 0

while i < 9:
    ButtonList[i] = Label(root, text = i, width = 4, height = 2)
    ButtonList[i].grid(row = i%3, column = i/3)

    ButtonList[i].bind("<Enter>", recolor) 

    i += 1

root.mainloop()

此脚本仅重新处理我单击的窗口小部件,并在释放按钮后对<Enter>事件作出反应。当我按住鼠标按钮时,如何让脚本在所有小部件上对<Enter>事件做出反应?

我为我的英语道歉。

1 个答案:

答案 0 :(得分:2)

当绑定触发时,widget属性将始终设置为处理事件的窗口小部件。要在鼠标下找到小部件,您需要使用方法winfo_containing