猿问

tkinter 属性错误 - 对象没有属性。我不明白为什么它找不到这个对象的属性

我正在使用 tkinter 在 python 中创建一个类似胭脂的基于文本的冒险游戏,我正在尝试设置 GUI。我希望菜单栏在我进入主游戏屏幕后出现(所以在玩家点击“开始游戏”后)。出于某种原因,当我为它调用函数时,python 找不到我定义的菜单栏,我不明白为什么。

几天来我一直在尝试不同的方法并在其他论坛上进行研究,但我还没有找到答案。我试过: - 创建一个函数 - 试图从另一个类中调用它的变量 - 重命名对象 - 检查缩进 - 据我所知,这很好

我也尝试过正常创建菜单栏并在程序运行时加载它。(即不是在函数中,而是在类的“ init ”部分。)这有效,但我希望菜单栏稍后出现,而不是在开始时出现。

这是我在 stackoverflow 上的第一篇文章,所以如果我的任何格式有点不对,我深表歉意,尤其是我展示的代码。我似乎无法正确突出显示 python 语法。


我希望有人可以帮助我。谢谢!>.<


EDIT1 (29/03/2019): 这是我得到的错误:


Traceback (most recent call last):

  File "C:\Users\***\Documents\Python\Games\FireofStromwarldv2.0\game_Main1.py", line 356, in <module>

    game = FireofStromwarld()

  File "C:\Users\***\Documents\Python\Games\FireofStromwarldv2.0\game_Main1.py", line 50, in __init__

    self.frames[1] = GameMenu(parent = frmContainer, controller = self)

  File "C:\Users\***\Documents\Python\Games\FireofStromwarldv2.0\game_Main1.py", line 130, in __init__

    controller.CreateMenu()

  File "C:\Users\***\Documents\Python\Games\FireofStromwarldv2.0\game_Main1.py", line 74, in CreateMenu

    NewMenu = self.menuBar

  File "C:\Users\***\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2098, in __getattr__

    return getattr(self.tk, attr)

AttributeError: '_tkinter.tkapp' object has no attribute 'menuBar'

[Finished in 0.8s]

*** 只是为了审查我的用户名。


慕妹3146593
浏览 241回答 1
1回答

翻阅古今

这是因为您controller.CreateMenu()在创建时调用,GameMenu()此时self.menuBar使用的 incontroller.CreateMenu()并不存在,因为self.menuBar在GameMenu().尝试self.menuBar = tkMenu(self)在声明之前的某个地方搬入__init__(...)课堂。FireofStromwarldself.frames[1] = GameMenu(parent = frmContainer, controller = self)
随时随地看视频慕课网APP

相关分类

Python
我要回答