首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3类错误

Python 3类错误
EN

Stack Overflow用户
提问于 2017-01-09 15:44:05
回答 1查看 251关注 0票数 0

我试着用类来做一个小程序。到目前为止,我已经做了两个类,其中第一个将运行下一个。当我运行这个时,我会收到一条错误消息。我不明白是怎么回事,但在读Menu1之前,我给它下了定义。我将在这些类之后创建一个新函数,它首先运行MainWindow,然后运行Menu1。我会很感激你的帮助。

代码:

代码语言:javascript
复制
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()

错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "", line 7, in <module>
    class MainWindow:
  File "", line 13, in MainWindow
    menu = Menu1()
NameError: name 'Menu1' is not defined

Process finished with exit code 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 15:47:41

class MainWindow下的所有内容都会立即运行。这不是一种方法。到那时,class Menu1还没有被执行,并且还没有那个名称的类。

看起来,您实际上只想让MainWindow成为一个函数:

代码语言:javascript
复制
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()无法访问main_window()中的app局部变量;您需要传入:

代码语言:javascript
复制
menu = Menu1()
menu.makeMenu(app)

代码语言:javascript
复制
class Menu1:
    def makeMenu(self, app):
        app.config(menu=self)
        menu.add_cascade(label="Settings", menu=subMenu)
        subMenu.add_command(label="Settings", command=setting1)

注意,我在那里将menu更改为selfmenumain_window中的另一个本地名称。

代码仍然无法工作,因为您还没有在任何地方定义名称subMenu,但这至少更近了一步或2步。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41551621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档