所有文件都位于“ venv”目录中
我将代码分成五个单独的文件。一个“主”文件,收集所有其他文件并最终创建GUI。文件的前缀为'Note',后面加上适当的说明。
我现在的问题是将'NoteTopMenu'导入主文件'NoteMainApp'。 代码是:
import NoteStatusbar as SB
import NoteTopMenu as TM
import NoteWidgets as NW
import tkinter as tk
class MainApp(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self,parent)
super().__init__(parent)
self.topbar = TM.TopMenu(parent)
self.widget = NW.FrontFrames(parent)
self.statusbar = SB.StatusBar(parent)
root = tk.Tk()
MainApp(root).pack(side="top", fill="both")
root.mainloop()
我收到错误消息:
Traceback (most recent call last):
File "C:/Users/PycharmProjects/MindNotez/NoteMainApp.py", line 2, in <module>
import NoteTopMenu as TM
File "C:\Users\PycharmProjects\MindNotez\NoteTopMenu.py", line 2, in <module>
import NoteMainApp as Main
File "C:\Users\PycharmProjects\MindNotez\NoteMainApp.py", line 29, in <module>
MainApp(root).pack(side="top", fill="both")
File "C:\Users\PycharmProjects\MindNotez\NoteMainApp.py", line 13, in __init__
self.topbar = TM.TopMenu(parent)
AttributeError:模块'NoteTopMenu'没有属性'TopMenu'
NoteTopMenu中的代码为:
import NoteMainApp as Main
import NoteWidgets as NW
import tkinter as tk
class TopMenu(NW.FrontFrames):
"""Class creating the top menu bar."""
def __init__(self, master):
super().__init__(master)
# *******Top-Navigation Bar (tnb)**********
tnb = tk.Menu(master)
Main.root.config(menu=tnb)
....
如果我在主文件中注释掉NoteTopMenu,则代码运行不会出现问题。我检查了拼写,但PyCharm还为我提供了代码补全功能。因此,PyCharm会找到文件,模块,我的课程和其他模块,而不会出现问题。 您知道为什么找不到文件或模块或导入失败吗?
完整代码在GitHub上:MindNotez
非常感谢您的帮助!
答案 0 :(得分:6)
您调用NoteMainApp.py
,后者导入NoteTopMenu.py
,后者导入NoteMainApp.py
,而不是,然后继续导入NoteTopMenu.py
(因为导入具有已经开始了)。然后,NoteMainApp.py
的导入将继续分析文件的其余部分。此时已经定义了模块NoteTopMenu
,但是它没有任何属性(因为还没有定义它们的属性)……因此出现了错误。
我建议NoteTopMenu.py
不应导入NoteMainApp.py
(并且如果两个文件都需要位,则应将它们移到两个都可以导入的文件中)