NameError 'Menu' 未定义 Python, Tkinter

-2 投票
1 回答
3068 浏览
提问于 2025-04-27 12:31

我在运行这段代码的时候总是遇到一个错误,错误信息是:

NameError: name 'Menu' is not defined

import Tkinter as tk
import Tkinter

class Navbar:
    menu = Menu()
    root.config(menu=menu)

    fileMenu = Menu(menu)
    menu.add_cascade(label='File', menu=fileMenu)
    fileMenu.add_command(label='New', command=doNothing)
    fileMenu.add_separator()
    fileMenu.add_command(label='Settings', command=doNothing)
    fileMenu.add_separator()
    fileMenu.add_command(label='Quit', command=doNothing)
class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.navbar = Navbar(self)
        self.navbar.pack(side="left", fill="y")
if __name__ == "__main__":
    root = tk.Tk()
    MainApplication(root).pack(side="top", fill="both", expand=True)
    root.mainloop()

为什么会出现这个错误?我该怎么做才能避免这个错误呢?

暂无标签

1 个回答

2

MenuTkinter 模块中的一个命令,就像你正在使用的 TkFrame 一样。由于你导入了这个模块两次,所以你可以用 Tkinter.Menu(...)tk.Menu(...) 来调用它。

通常情况下,你只需要导入一次 Tkinter。我猜测你可能是从多个地方复制粘贴代码。我的建议是使用 import Tkinter as tk,然后在所有 Tkinter 的函数前加上 tk. 这个前缀。这样做会让代码更容易理解。

撰写回答