Tkinter - 跟踪其他变量变化的变量

Tkinter - variable to trace change in other variable

所以我有这个代码片段:

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 中的变化,但我仍然不知道如何:

  1. 检测新值
  2. 根据新值更新AgeVar

所以这是方法:

def OnOptionMenuChnage(omv,av, *pargs):
    print omv.get(), av.get()
    # do more. set av value based on omv value

OptionMenuVar.trace("w", lambda *pargs: OnOptionMenuChnage(OptionMenuVar,AgeVar, *pargs))

完整代码

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)

    def OnOptionMenuChnage(omv,av, *pargs):
        print omv.get(), av.get()
        # do more. set av value based on omv value

    OptionMenuVar.trace("w", lambda *pargs: OnOptionMenuChnage(OptionMenuVar,AgeVar, *pargs))

全部归功于 Marcin answer