首先,我知道这个问题有很多线程,但是我在此方面仍然取得了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
。
答案 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()