使用 Tkinter GUI 应用程序。由于代码变得相当大,我想开始将其分割成不同的文件。例如。类的单独文件、函数的单独文件等。
但是,如果我们使用 class.py 文件,它包含几个基于例如Tkinter 小部件。 代码片段:
class MylabelFrame(tk.LabelFrame):
def __init__(self,parent,labels,header):
super().__init__()
self.labels=labels
self.configure(text=header)
self.parent=parent
thisRow=0
thisColumn=0
self.textvar='n/a'
for i in self.labels:
<and so on>
因此结构可能如下所示:
/main
main.py (need to import Tkinter tk)
/lib
class.py (need to import Tkinter tk)
functions.py (need to import Tkinter tk)
调试应用程序时,它会抛出错误,因为例如由于缺少导入 tk,class.py 无法构建。然而,导入是在main中完成的,但这也不例外。
NameError: name 'tk' is not defined
我知道我们有 init.py 和 all,但在我看来这并不能解决问题..
处理这个问题的正确方法是什么?当然,我可以对每个文件使用相同的导入,但这感觉像是在创造开销吗?最后,我需要在每个 .py 文件上导入相同的模块......我想一定有一种更聪明的方法来做到这一点?
提前谢谢您!
我会继续在您需要的每个模块中导入 tkinter。这简单明了,并且不会花费您担心的开销 - 您只会从第一次导入时创建对已加载模块的引用