Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 菜单栏在配置时不会出现在tkinter中_Python_Python 3.x_Oop_Object_Tkinter - Fatal编程技术网

Python 菜单栏在配置时不会出现在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)

我正在创建一个tkinter应用程序。现在,我只想让一个非常基本的菜单栏工作,有一个文件部分,在子菜单中有一个退出按钮。以下是我的面向对象代码,这可能是我出错的地方:

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