我正在使用 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]*** 只是为了审查我的用户名。
1 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
这是因为您controller.CreateMenu()
在创建时调用,GameMenu()
此时self.menuBar
使用的 incontroller.CreateMenu()
并不存在,因为self.menuBar
在GameMenu()
.
尝试self.menuBar = tkMenu(self)
在声明之前的某个地方搬入__init__(...)
课堂。FireofStromwarld
self.frames[1] = GameMenu(parent = frmContainer, controller = self)
添加回答
举报
0/150
提交
取消