【发布时间】:2018-03-14 11:52:08
【问题描述】:
我想将标签值设置为当前选项菜单值的值。如果后者发生变化,我希望前者也发生变化。我的问题是这个 gui 元素是在单独的类中定义的(我希望它们像那样),但我不知道如何将它们连接在一起。如果没有类,我知道我可以使用OptionMenu 的command 方法来设置Label 的值。但是将它们放入框架容器中我被卡住了。
这是我要解决的简单且有效的代码:
from tkinter import *
root = Tk()
opt=['Jan', 'Feb', 'March']
class MyOptMenu(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
self.pack()
self.var = StringVar(self)
self.var.set(opt[0])
self.om = OptionMenu(self, self.var, *opt)
self.om.pack(side=TOP)
self.var.trace('w', self.getValue)
def getValue(self, *args):
return(self.var.get())
class MyLabel(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.pack()
self.labstring = StringVar(self)
self.lab = Label(self, textvariable = self.labstring, bg='white')
self.lab.pack(side=TOP)
self.labstring.set('hello')
a = MyOptMenu(root)
b = MyLabel(root)
root.mainloop()
你能给我一些帮助吗?非常感谢。
【问题讨论】:
-
最简单的方法是让您的标签具有与选项菜单相同的
StringVar。你真的需要为每个人定义一个StringVar吗? -
嗯,其实这很聪明 :) 出于某种原因,我没有想到这一点。我进行了更改并且它有效。非常感谢。
-
@KiralySandor 如果您已解决问题,请提供答案。
-
@Nae,我添加了对我有用的解决方案的答案并添加了 cmets,以解释更改。
标签: python-3.x tkinter label optionmenu