当前位置:  开发笔记 > 编程语言 > 正文

Python 3类错误

如何解决《Python3类错误》经验,为你挑选了1个好方法。

我正在尝试通过使用类来制作一个小程序.到目前为止,我已经创建了两个类,其中第一个将运行下一个类.当我运行它时,我收到一条错误消息.我不明白什么是错的,但看起来它有一些关于我Menu1在读取之前定义名称的事情.我将在这些类之后创建一个新函数,它将首先运行MainWindow,然后再运行Menu1.我很感激帮助.

码:

class MainWindow:
    app = Tk()
    app.title("MyApp")
    window = Frame(app, width=1050, height=550)
    app.minsize(width=1050, height=550)
    window.pack()
    menu = Menu1()
    menu.makeMenu()
    app.mainloop()


class Menu1:
    def makeMenu(self):
        app.config(menu=menu)
        menu.add_cascade(label="Settings", menu=subMenu)
        subMenu.add_command(label="Settings", command=settings1)

def settings1():
    print("Open new window")


if __name__ == "__main__":
    MainWindow()

错误信息:

Traceback (most recent call last):
  File "", line 7, in 
    class MainWindow:
  File "", line 13, in MainWindow
    menu = Menu1()
NameError: name 'Menu1' is not defined

Process finished with exit code 1

Martijn Piet.. 5

一切都在下面立即class MainWindow运行.它不是一种方法.此时尚未执行,并且尚未存在该名称的类.class Menu1

看起来你真的只想MainWindow成为一个功能:

def main_window():
    app = Tk()
    app.title("MyApp")
    window = Frame(app, width=1050, height=550)
    app.minsize(width=1050, height=550)
    window.pack()
    menu = Menu1()
    menu.makeMenu()
    app.mainloop()

(这次我使用了小写字母,因为Python样式指南保留了类的驼峰名称).

你的下一个问题是Menu1.makeMenu()无法访问app本地变量main_window(); 你需要传递它:

menu = Menu1()
menu.makeMenu(app)

class Menu1:
    def makeMenu(self, app):
        app.config(menu=self)
        menu.add_cascade(label="Settings", menu=subMenu)
        subMenu.add_command(label="Settings", command=setting1)

请注意,我换menuself那里,menu在另一个地方的名字main_window.

代码仍然不起作用,因为您没有在subMenu任何地方定义名称,但这至少是一步或者更接近一步.



1> Martijn Piet..:

一切都在下面立即class MainWindow运行.它不是一种方法.此时尚未执行,并且尚未存在该名称的类.class Menu1

看起来你真的只想MainWindow成为一个功能:

def main_window():
    app = Tk()
    app.title("MyApp")
    window = Frame(app, width=1050, height=550)
    app.minsize(width=1050, height=550)
    window.pack()
    menu = Menu1()
    menu.makeMenu()
    app.mainloop()

(这次我使用了小写字母,因为Python样式指南保留了类的驼峰名称).

你的下一个问题是Menu1.makeMenu()无法访问app本地变量main_window(); 你需要传递它:

menu = Menu1()
menu.makeMenu(app)

class Menu1:
    def makeMenu(self, app):
        app.config(menu=self)
        menu.add_cascade(label="Settings", menu=subMenu)
        subMenu.add_command(label="Settings", command=setting1)

请注意,我换menuself那里,menu在另一个地方的名字main_window.

代码仍然不起作用,因为您没有在subMenu任何地方定义名称,但这至少是一步或者更接近一步.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有