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()
快速和肮脏-您可以让函数检查切换器属性。
您无法获取小部件分配给的变量名,这将相对无用。一个小部件可以分配给多个变量,或者根本不分配。
获取标签文本
您可以访问实际的小部件,并可以使用它获取标签上的文本。您的示例显示所有标签都是相同的,因此这可能对您没有帮助:
使用自定义小部件名称
您还可以为小部件命名。你不可能准确地得到名字,但你可以非常接近。例如,如果创建这样的标签:
通过拆分“.”并获取最后一个值,可以获取小部件的字符串表示形式:
通过绑定传递名称
最后,可以设置绑定,以便将名称发送到函数:
您可以使用
event.widget
从单击的小部件中获取标准参数示例:
您可以将自己的变量分配给小部件
然后拿到它
示例:
可以使用
lambda
将函数与参数绑定示例:
相关问题 更多 >
编程相关推荐