2013-01-21 4 views
0

예를 들어 9 개의 위젯 (Buttons, Labels ...)이있는 곳에서 스크립트를 만들려고합니다. 위젯을 클릭 한 상태로 드래그하면됩니다. 마우스 버튼을 놓을 때까지 위젯을 모두 재 위젯 (위젯을 드래그하여 놓은 것)으로 만들 수 있습니다.Tkinter에서 드래그하여 여러 위젯을 다시 칠하는 방법

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

이 스크립트는 I가하고 <Enter> 이벤트에 반응하는 버튼을 해제 한 후 클릭 한 위젯을 recolors. 마우스 버튼을 길게 누르면 모든 위젯에서 <Enter> 이벤트가 반응하도록 스크립트를 만드는 방법은 무엇입니까?

영어로 사과합니다.

답변

2

바인딩이 실행되면 widget 속성은 항상 이벤트를 처리하는 위젯으로 설정됩니다. 마우스 아래에서 위젯을 찾으려면 winfo_containing 메서드를 사용해야합니다.

+0

대단히 감사합니다! 이제 잘 작동합니다. – user1967718

관련 문제