我的代码如下:
from tkinter import *
root = Tk()
root.title("sample program")
def print_item_from_list(event):
print(variable)
list = [1, 2, 3, 4, 5]
seclist = []
print(list)
for i in range(0,5):
variable = list[i]
sample = Label(text=variable)
sample.pack()
sample.bind('<Enter>', print_item_from_list)
root.mainloop()
我想要实现的是,每次我的指针输入标签'Sample'时,都会打印指定的项目表单列表(即当我将鼠标悬停在标签'2'上时,我希望我的列表中的第二个对象被打印)。我尝试将变量更改为 list [i] (仅用于测试是否可行)并创建第二个列表并附加到它,但没有运气。我的猜测是它以某种方式与Tkniter行为有关。
答案 0 :(得分:2)
使用您的代码:
from tkinter import *
root = Tk()
root.title("sample program")
def print_item_from_list(event):
print(event.widget.config("text")[-1])
list = [1, 2, 3, 4, 5]
seclist = []
print(list)
for i in range(0,5):
variable = list[i]
sample = Label(text=variable)
sample.pack()
sample.bind('<Enter>', print_item_from_list)
root.mainloop()
答案 1 :(得分:1)
你可以使用闭包:
for i in range(0,5):
variable = list[i]
sample = Label(text=variable)
sample.pack()
def connect_callback(variable):
sample.bind('<Enter>', lambda event:print(variable))
connect_callback(variable)
这将创建一个新的回调函数,每个标签都有一个固定值。在您的代码中,所有回调都引用相同的variable
,但使用此解决方案,每个回调都有自己的variable
。