【发布时间】:2015-04-08 15:11:18
【问题描述】:
所以我有这个代码sn-p:
for p in self.ProductNames:
OptionMenuVar = StringVar()
menu = OptionMenu(self.FrameProducts, OptionMenuVar, *self.ProductNames)
OptionMenuVar.set(p)
AgeVar = StringVar()
AgeEntry = Entry(self.FrameProducts,width=15,textvariable=AgeVar,state="readonly",justify=CENTER)
生成此 UI:
问题
如何跟踪OptionMenuVar 的变化并根据所选值更新AgeVar?
我读过The Variable Classes。我想我知道如何跟踪 OptionMenuVar 中的更改,但我仍然不知道如何:
- 检测新值
- 根据新值更新
AgeVar
【问题讨论】:
-
您可以通过
StringVar对象的trace()方法在其值更改时调用某个函数。在你的情况下OptionMenuVar.trace("w", mycallback)。见The Variable Classes (BooleanVar, DoubleVar, IntVar, StringVar)。"w"是mode,表示“写入”时调用。 -
是的。已经知道这种方法了。只是不知道如何应用它:)
-
刚刚想通了...
-
编写一个函数,调用时获取
OptionMenuVar的当前值并设置AgeVar的值。 -
很难阅读您的代码,因为您的变量名没有遵循PEP 8 - Style Guide for Python Code,因为它们使用了 CapWords(又名 CamelCase),所以看起来都像类名。跨度>
标签: python callback tkinter observers