- 我正在使用 PyCharm
所有文件都在'venv'目录中
- 文夫
- NoteFunction.py
- NoteMainApp.py
- ...
我将我的代码分成五个单独的文件。一个“主”文件,收集所有其他文件并最终创建 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
非常感谢您的帮助!
最佳答案
您调用 NoteMainApp.py
导入 NoteTopMenu.py
导入 NoteMainApp.py
不重新导入 NoteTopMenu.py
(因为导入已经开始)。 NoteMainApp.py
的导入然后继续解析文件的其余部分。此时模块 NoteTopMenu
已定义,但它没有任何属性(因为您还没有开始定义它们)...因此出现错误。
我建议 NoteTopMenu.py
不应导入 NoteMainApp.py
(如果两个文件都需要,则应将它们移动到另一个文件中可以导入)
关于python - 为什么即使导入、拼写和文件位置正确,我仍会收到 AttributeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315744/