我正在用 Python 2.7 编写一个 Tkinter 应用程序,但我遇到了一些我以前没有遇到过的麻烦。据我所知,Tkinter 模块似乎是为__init__
我的类中的函数导入的,但不是为其他函数导入的。这是我所拥有的简化版本:
from Tkinter import *
class App:
def __init__(self):
self.master = Tk()
self.window = Frame(self.master)
self.window.grid()
self.BuildFrames()
self.master.mainloop()
def BuildFrames(self):
frames = []
frames.append(Frame(self.window,borderwidth=2,padx=10,pady=10))
# more code follows...
for Frame in frames:
Frame.grid()
App()
当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "myApp.py", line 131, in <module>
App()
File "myApp.py", line 12, in __init__
self.BuildFrames()
File "myApp.py", line 26, in BuildFrames
frame1 = Frame(self.window,borderwidth=2,padx=10,pady=10)
UnboundLocalError: local variable 'Frame' referenced before assignment
据我所知,该Frame
函数没有被识别为函数中的 Tkinter 方法BuildFrames()
。它到底怎么能在里面被识别出来__init__
而不是在里面呢BuildFrames
???
我可以通过将导入更改为:
import Tkinter as Tk
然后Tk.
在所有 Tkinter 方法前面添加一个,但宁愿避免它(而且我不应该这样做!)
我一定错过了关于导入工作方式的一些重要内容,但我可以发誓这种相同类型的代码以前对我有用。有人可以帮我解决这个问题吗?