使用 tkinter 时出现 Nameerror

Namerror while using tkinter

大家好,我创建菜单栏小部件的代码是:

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()

错误是 "name 'self' is not defined" 并引用该行 "app.config(menu=self.menubar)"

有谁知道如何修复它,因为 self.menubar 在 init 方法中?

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

您需要将违规行更改为:

root.config(menu=app.menubar)