我为tkinter GUI编写了一个类,由于某种原因,我无法访问在按钮的回调函数中创建的Entry
小部件:
import tkinter as tk
class MyGUI:
def __init__(self, master):
entry = tk.Entry(master)
entry.pack()
self.run = tk.Button(master, text="Run", command=self.run)
self.run.pack()
def run(self):
print('Entry content is:', entry.get())
root = tk.Tk()
my_gui = MyGUI(root)
root.mainloop()
代码抛出NameError: name 'entry' is not defined
。我在做什么错了?
答案 0 :(得分:3)
您忘记在entry
中将self
设置为属性,也没有从self
访问它。此外,您定义了一个self.run
和一个def run(..)
方法,这将导致 instance 的方法被覆盖。因此,您应该将其重命名为其他名称,例如_run
。
import tkinter as tk
class MyGUI:
def __init__(self, master):
self.entry = tk.Entry(master)
self.entry.pack()
self._run = tk.Button(master, text="Run", command=self.run)
self._run.pack()
def run(self):
print('Entry content is:', self.entry.get())
root = tk.Tk()
my_gui = MyGUI(root)
root.mainloop()