Python Tkinter标签 - 基于下拉菜单的更新

时间:2018-02-28 00:58:56

标签: python tkinter

我正在尝试在我的Tkinter窗口底部创建一个标签,该标签将根据所选的下拉菜单更新用户点击"生成"按钮。我已经达到了我的代码无错误地运行的程度,但它没有输出标签,它保持为Py_var0。谁能告诉我我在哪里出错?我知道它必须在run函数中,或者Labelvar的设置方式不正确,但我对Python来说相对较新,所以我被卡住了!我已经尝试查找了,我的代码看起来就像我设置的所有示例和答案一样,所以我必须错过一些明显的东西!

感谢您的帮助:

from tkinter import *

kb = Tk()

def run():

    global Labelvar

    if var1.get() == "A":
        Labelvar.set("Label updated")

    resultlabel.config(text=Labelvar)

    return

Labelvar = StringVar(kb)

var1 = StringVar(kb)

var1.set("A")

resultlabel = Label(kb, text=Labelvar)

menu = OptionMenu(kb, var1, "A", "B", "C")

generate = Button(kb, text="Go", command=run)

menu.grid(row=1, column=2)

generate.grid(row=4, column=2, sticky=W)

resultlabel.grid(row=5, column=1)

mainloop()

1 个答案:

答案 0 :(得分:0)

问题出在resultlabel.config(text=Labelvar),因为text参数需要一个字符串,但是如果你传递了其他东西(不确定),比如StringVar,标签会抓住你传递的内容并将str()应用于它。解决这个问题

from tkinter import *

kb = Tk()

def run():

    if var1.get() == "A":
        Labelvar.set("Label updated")

    resultlabel.config(textvariable=Labelvar)

    return

Labelvar = StringVar()

var1 = StringVar()

var1.set("A")

resultlabel = Label(kb, textvariable=Labelvar)

menu = OptionMenu(kb, var1, "A", "B", "C")

generate = Button(kb, text="Go", command=run)

menu.grid(row=1, column=2)

generate.grid(row=4, column=2, sticky=W)

resultlabel.grid(row=5, column=1)
#This two methods are simply for testing purposes. It works.
run()
kb.mainloop()