Python 菜单栏在配置时不会出现在tkinter中
我正在创建一个tkinter应用程序。现在,我只想让一个非常基本的菜单栏工作,有一个文件部分,在子菜单中有一个退出按钮。以下是我的面向对象代码,这可能是我出错的地方:Python 菜单栏在配置时不会出现在tkinter中,python,python-3.x,oop,object,tkinter,Python,Python 3.x,Oop,Object,Tkinter,我正在创建一个tkinter应用程序。现在,我只想让一个非常基本的菜单栏工作,有一个文件部分,在子菜单中有一个退出按钮。以下是我的面向对象代码,这可能是我出错的地方: import tkinter as tk class MainApplication(tk.Frame): def __init_(self, parent, *args, **kwargs): tk.Frame.__init__(self, parent, *args, **kwargs)
import tkinter as tk
class MainApplication(tk.Frame):
def __init_(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.menubar = tk.Menu(self)
self.filemenu = tk.Menu(self.menubar, tearoff=0)
self.filemenu.add_command(label="Exit", command=self.quit)
self.menubar.add_cascade(label="File", menu=self.filemenu)
self.config(menu=self.menubar)
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).pack(side="top", fill="both", expand=True)
root.mainloop()
但是,这只会创建一个空白的tkinter窗口。当我使用过程编程时,这通常适用于我,所以我认为我在用OOP做错事。我试图将self.config()称为root.config(),但这不起作用。2个大问题。首先,您拼写错误了
\uuuu init\uuuu
,因此没有运行任何自定义代码。第二,您需要将菜单应用于根窗口,即self.master(默认名称)或self.parent(您的名称)。试着这样做:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, master=None, **kwargs):
super().__init__(master, **kwargs)
self.menubar = tk.Menu(self)
self.filemenu = tk.Menu(self.menubar, tearoff=0)
self.filemenu.add_command(label="Exit", command=self.quit)
self.menubar.add_cascade(label="File", menu=self.filemenu)
self.master.config(menu=self.menubar)
if __name__ == "__main__":
root = tk.Tk()
root.geometry('200x200') # remove once you've added window content
win = MainApplication(root)
win.pack(side="top", fill="both", expand=True)
root.mainloop()
我还将您转移到python3继承样式,并定义了一个大小,以便您实际看到一些东西。您是否进行过任何基本调试,例如验证
\uuu init\uu
是否正在运行?提示:不是。它应该是\uuuu init\uuuu
。