我试图执行我的第一个tkinter应用程序,但它给我的错误如下所示。知道为什么“frame”对同一个类的函数不可见吗?在
Traceback (most recent call last):
File "C:\Data\Personal\Python\Tkinter\GUI_ver1.py", line 25, in <module>
myapp = App(root)
File "C:\Data\Personal\Python\Tkinter\GUI_ver1.py", line 7, in __init__
self.createWidgets()
File "C:\Data\Personal\Python\Tkinter\GUI_ver1.py", line 10, in createWidgets
self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
NameError: global name 'frame' is not defined
我的计划如下:
^{pr2}$
在
^{pr2}$__init__
中定义的frame
在任何其他方法中都不可见。如果你想访问它,你需要使它成为self
的属性。在在使用变量时,不要忘记包括
self.
。在这是解决NameError的最简单方法,但是您的代码仍然会因为
AttributeError: App instance has no attribute 'master'
错误而崩溃。发生这种情况是因为,尽管您将App
作为Frame
的子类,但从未为其调用Frame
初始值设定项,因此当您尝试调用框架方法时,它会变得混乱。记得打电话给__init__
。在有了最后的添加,您的代码应该可以正常工作,但是它比需要的复杂一些。您的
App
实例是一个框架,但它本身也包含一个框架,self.frame
。您可以通过删除第二个框架并直接向self
添加小部件来简化这一过程。在相关问题 更多 >
编程相关推荐