from tkinter import *
main = Tk()
def flipper(event):
# I'd like to do this:
#if widgetname == switcher:
#do stuff
#if widgetname == switcher1:
#do stuff
return
switcher = Label(main, bg='white', text="click here", font="-weight bold")
switcher.grid()
switcher.bind("<Button-1>", flipper)
switcher1 = Label(main, bg='white', text="click here", font="-weight bold")
switcher1.grid()
switcher1.bind("<Button-1>", flipper)
switcher2 = Label(main, bg='white', text="click here", font="-weight bold")
switcher2.grid()
switcher2.bind("<Button-1>", flipper)
switcher3 = Label(main, bg='white', text="click here", font="-weight bold")
switcher3.grid()
switcher3.bind("<Button-1>", flipper)
switcher4 = Label(main, bg='white', text="click here", font="-weight bold")
switcher4.grid()
switcher4.bind("<Button-1>", flipper)
switcher5 = Label(main, bg='white', text="click here", font="-weight bold")
switcher5.grid()
switcher5.bind("<Button-1>", flipper)
main.mainloop()
在我的事件函数中,我希望根据所点击的标签执行不同的操作。但我困惑的是,我只能获取所点击的小部件的标识符号,而无法获取其名称。如果我能够获取所有小部件的标识符,则可以执行以下操作:
def flipper(event):
if event.widget == switcher.identifier():
do stuff
但是我找不到如何获取特定小部件的ID...
通过其标识符(event.widget()
),如何获取小部件的名称?
或者,如何获取指定小部件名称的标识符?
如果两者都不可能,那么我就必须为每个标签制作不同的功能和绑定,这是很多工作,希望不必要。
编辑:
from tkinter import *
main = Tk()
def flipper(event, switch):
if switch.widget == 's1':
print("got it")
switcher = Label(main, bg='white', text="click here", font="-weight bold")
switcher.grid()
switcher.bind("<Button-1>", flipper)
switcher.widget = 's1'
main.mainloop()
if event.widget == '.!canvas.!button':
这样的语句呢?因为尽管我打印出了event.widget
并且它是.!canvas.!button
,但if
语句并没有被执行。你有什么想法吗? - Delrius Euphoriaif str(event.widget) == ".!canvas.!button"
但我从来没有发现它有用过。 - Bryan Oakleyclass
是不同的。 - Delrius Euphoria