And*_*er- 0 python tkinter python-3.x
我正在尝试通过使用类来制作一个小程序.到目前为止,我已经创建了两个类,其中第一个将运行下一个类.当我运行它时,我收到一条错误消息.我不明白什么是错的,但看起来它有一些关于我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()
Run Code Online (Sandbox Code Playgroud)
错误信息:
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
Run Code Online (Sandbox Code Playgroud)
一切都在下面立即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()
Run Code Online (Sandbox Code Playgroud)
(这次我使用了小写字母,因为Python样式指南保留了类的驼峰名称).
你的下一个问题是Menu1.makeMenu()无法访问app本地变量main_window(); 你需要传递它:
menu = Menu1()
menu.makeMenu(app)
Run Code Online (Sandbox Code Playgroud)
和
class Menu1:
def makeMenu(self, app):
app.config(menu=self)
menu.add_cascade(label="Settings", menu=subMenu)
subMenu.add_command(label="Settings", command=setting1)
Run Code Online (Sandbox Code Playgroud)
请注意,我换menu到self那里,menu在另一个地方的名字main_window.
代码仍然不起作用,因为您没有在subMenu任何地方定义名称,但这至少是一步或者更接近一步.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |