为什么即使导入、拼写和文件位置正确,我也会收到AttributeError?

2024-09-30 16:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 我在用PyCharm
  2. 所有文件都在“venv”目录下

    • 静脉
    • 你知道吗注释函数.py你知道吗
    • 你知道吗Notemain应用程序.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)

属性错误:模块“NoteTopMenu”没有属性“TopMenu”

NoteTop菜单中的代码是:

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

非常感谢你的帮助!你知道吗


Tags: 文件代码pyimportselfinitasroot
1条回答
网友
1楼 · 发布于 2024-09-30 16:23:55

调用NoteMainApp.py导入NoteTopMenu.py导入NoteMainApp.py而不是继续重新导入NoteTopMenu.py(因为导入已经开始)。导入NoteMainApp.py然后继续解析文件的其余部分。此时模块NoteTopMenu已定义,但它没有任何属性(因为您还没有时间定义它们)。。。因此出现了错误。你知道吗

我建议NoteTopMenu.py不应该导入NoteMainApp.py(如果两个文件都需要任何位,那么应该将它们移到另一个文件中,这两个文件都可以导入)

相关问题 更多 >