[英]Python reference with Tkinter label change text
我试图从另一个函数更改我的Tkinter Label
文本。 不知何故,我无法引用Label
,因此不会更改Label,只在旧版本上添加一个新的。
self.errorLabel['text'] = 'second'
在Window的init函数内部工作,但我需要能够从另一个函数执行它,因此以某种方式引用错误。
这是我的代码:
import sys
from tkinter import *
from tkinter import ttk
class Window(Frame):
def __init__(self, master = None):
Frame.__init__(self, master)
self.master = master
self.errorLabel = Label(self, text="some text").grid(row=0)
self.init_window()
def init_window(self):
self.master.title("Example")
self.pack(fill=BOTH, expand=1)
goButton = Button(self, text="Go!", command=self.client_go).grid(row=1, column=1)
quitButton = Button(self, text="Close", command=self.client_exit).grid(row=1, column=0)
def client_exit(self):
exit()
def client_go(self):
self.errorLabel['text'] = 'second' # TypeError: 'NoneType' object does not support item assignment
self.errorLabel = Label(self, text="second").grid(row=0)
return
root = Tk()
root.geometry("800x500")
app = Window(root)
root.mainloop()
这是tkinter代码的一个非常常见的错误。 Widget.grid
返回None
,所以当你写:
self.errorLabel = Label(self, text="some text").grid(row=0)
self.errorLabel
是None
。 相反,创建窗口小部件并在单独的代码行中使用它的几何管理器:
self.errorLabel = Label(self, text="some text")
self.errorLabel.grid(row=0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.