0

たとえば、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>マウスボタンを押したときにすべてのウィジェットでイベントに反応するようにスクリプトを作成するにはどうすればよいですか?

英語をお詫びします。

4

1 に答える 1

2

バインディングが発生すると、widget属性は常に、イベントを処理しているウィジェットに設定されます。マウスの下にあるウィジェットを見つけるには、メソッドwinfo_includingを使用する必要があります。

于 2013-01-21T14:59:05.507 に答える