【发布时间】:2021-04-29 17:39:42
【问题描述】:
我的第一次 tkinter 体验相当顺利,但现在我被难住了。
我抓取了我在另一个线程上看到的一些代码,并添加了一个“新项目”。我可以看到选择“新项目”时未执行回调函数。 StrVar 不会像初始项目一样针对“新项目”进行更新。如果 StrVar 确实更新了,那么我就不需要回调函数了。
我尝试使用 .__setit()、.trace_add()、回调函数以及一些 .configure 东西来解决这个问题。我错过了什么?我需要让用户能够看到他们选择的项目。
import tkinter as tk
def callback(selection):
print(selection)
root = tk.Tk()
options = tk.StringVar()
menu = tk.OptionMenu(root, options, 'a', 'b', 'c', command=callback)
menu.pack()
menu['menu'].add_command(label='New Item')
options.set('a')
root.mainloop()
【问题讨论】:
-
您是否尝试将
command=callback添加到.add_command(label="New Item")? -
@TheLizzard 你太快了 :(
-
@TkinterLover :D 我的方法会引发错误......所以我不认为我的答案是
-
@hilton8r 看看我在答案上发表的评论
-
谢谢你们!我尝试了很多可能接近的变化。我想我错过了将回调函数绑定到“新项目”以及将变量传递给错误位置的回调函数。