通过OptionMenu tkinter对象自动更新值

问题描述

我想编写一个tkinter应用程序,该应用程序将根据OptionMenu对象的当前状态自动更新值。这就是我到目前为止所拥有的

from tkinter import *
root = Tk()

def show():
  myLabel=Label(root,text=clicked.get()).pack()

clicked=StringVar()
clicked.set("1")

drop = OptionMenu(root,clicked,"1","2","3")
drop.pack()

myButton = Button(root,text="show selection",command=show)

root.mainloop()

在此版本中,只能通过单击按钮来更新文本。没有这个“中间人”,如何使文本自动更新?

解决方法

更改某些内容后,我开始使用它。

最好使用config()函数来更改项目的属性,另一个重要的事情是,不要pack()对象(在这种情况下为Label)与变量声明在同一行

像这样,您将能够更改文本。这是您的代码已更新!

from tkinter import *

def show():
    myLabel.config(text = clicked.get())

root = Tk()
clicked=StringVar( value="1")

myLabel=Label(root,text="click the button at the bottom to see this label text changed")
myLabel.pack()

drop = OptionMenu(root,clicked,"1","2","3")
drop.pack()

myButton = Button(root,text="show selection",command=show)
myButton.pack()

root.mainloop()
,

您可以简单地将clicked分配给textvariable的{​​{1}},然后只要选择一个选项,标签就会被更新:

Label