更改StringVar后,OptionMenu小部件不会更新,直到将其悬停为止

时间:2019-06-17 20:07:58

标签: python python-3.x tkinter

我需要一个菜单​​,该菜单可以响应通过运行代码单击的项目,然后将文本切换回默认文本。

当前,我的实现有效,但是仅当鼠标单击后将鼠标悬停在菜单上时才显示默认文本。

我进行了搜索,但找不到任何与此问题相关的信息,尽管那也许是因为我不确定到底是什么原因造成的。

以下是可重现此行为的代码:

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: gif

我希望顶部的文本能够立即更新,但是仅当光标悬停在小部件上时才会更新

我正在寻找某种方式来触发小部件上的悬停事件,或者我对实现此目的的其他方法持开放态度。

1 个答案:

答案 0 :(得分:2)

您可以采用其他方法,并使用command的{​​{1}}属性:

OptionMenu