Python 3无法更新Tkinter标签文本

时间:2019-06-17 17:23:33

标签: python python-3.x tkinter

首先,我知道这个问题有很多线程,但是我在此方面仍然取得了0项进展,没有一个解决方案有效。我什至用9行代码创建了一个最小的示例,不管我做什么,标签文本都不会改变:

root = tkinter.Tk()

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

root.geometry("500x50" + "+" + str(screen_width - 520) + "+" + str(screen_height - 140))
root.title("POE Price Checker")
rootLabelHeader = tkinter.Label(root, text = "Currently searching:").pack()

labelText = tkinter.StringVar()
labelText.set("Nothing")
rootLabelInfo = tkinter.Label(root, text = labelText.get(), width=90).pack()

#rootLabelInfo.configure(text="New String") # Nope
#rootLabelInfo.config(text="New String") # Nope

labelText.set("Doesnt Work")
labelText.get()

#root.after(1000, ListenToInput)
root.mainloop()

首先,我尝试使用StringVar,但没有任何反应,它从未将文本更改为“不工作”,也没有显示错误。

然后我尝试使用:

rootLabelInfo.configure(text="New String")
rootLabelInfo.config(text="New String")

都给我NoneType object has no attribute config

1 个答案:

答案 0 :(得分:1)

rootLabelInfo = tkinter.Label(root, text = labelText.get(), width=90).pack()将打包的对象函数(将返回None)存储到rootLabelInfo

如果您打算以后使用该小部件,请分两行进行:

rootLabelInfo = tkinter.Label(root, text = labelText.get(), width=90)
rootLabelInfo.pack()

另一种方法是使用StringVar并设置textvariable属性:

import tkinter

root = tkinter.Tk()

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

root.geometry("500x50" + "+" + str(screen_width - 520) + "+" + str(screen_height - 140))
root.title("POE Price Checker")
rootLabelHeader = tkinter.Label(root, text = "Currently searching:").pack()

labelText = tkinter.StringVar()
labelText.set("Nothing")
print(labelText.get())
rootLabelInfo = tkinter.Label(root, textvariable = labelText, width=90).pack()

labelText.set("New String")
print(labelText.get())

#root.after(1000, ListenToInput)
root.mainloop()