使用tkinter时的Namerror

时间:2018-10-30 15:21:09

标签: python-3.x tkinter menubar

嗨,我创建菜单栏小部件的代码是:

import tkinter as tk

class Asd(tk.Frame):

    def __init__(self,master=None):
        super().__init__(master)
        self.menubar = tk.Menu(self)
        self.create_widgets()

    def create_widgets(self):
        self.filemenu = tk.Menu(self.menubar,tearoff=0)
        self.menubar.add_cascade(label="File", menu = self.filemenu)
        self.filemenu.add_command(label = "Input-file")
        self.filemenu.add_command(label = "Output-file")

root=tk.Tk()
app=Asd(master=root)
app.master.title("Testprogramm")
app.config(menu=self.menubar)
app.mainloop()

错误是“未定义名称'self'”,并且引用了该行 “ app.config(menu = self.menubar)”

由于self.menubar在 init 方法中,有人知道如何修复它吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试在类范围之外使用self。您还遇到了试图将菜单栏附加到框架的问题。只有顶层窗口(实例为TkToplevel)才能与菜单栏关联。

您需要将违规行更改为此:

root.config(menu=app.menubar)