我需要一个菜单,它可以响应通过运行代码单击的项目,然后将文本切换回默认文本。目前,我的实现有效,但默认文本仅在单击后光标悬停在菜单上时显示。我已经搜索过,但找不到与此问题相关的任何内容,尽管这可能是因为我不确定究竟是什么原因造成的。这是重现此行为的代码:from tkinter import *root = Tk()default_text = 'select an item'def thing_selected(self, *args): #other stuff happens here var.set(default_text)var = StringVar(root)var.set(default_text)var.trace('w', thing_selected)menu = OptionMenu(root, var, *['Pizza','Lasagne','Fries','Fish'])menu.pack()root.mainloop()这是一个代表结果的gif:我希望顶部的文本会立即更新,但只有当光标悬停在小部件上时才会更新我正在寻找某种方法来触发小部件上的悬停事件,或者我愿意接受任何其他方法的建议来实现这一点。
1 回答

慕斯王
TA贡献1864条经验 获得超2个赞
您可以采取不同的路线并使用以下command属性OptionMenu:
import tkinter as tk
root = tk.Tk()
default_text = 'select an item'
def thing_selected(selected):
#other stuff happens here
print(var.get())
var.set(default_text)
print(var.get())
var = tk.StringVar()
var.set(default_text)
options = ['Pizza','Lasagne','Fries','Fish']
menu = tk.OptionMenu(root, var, *options, command = thing_selected)
menu.pack()
root.mainloop()
添加回答
举报
0/150
提交
取消