Python Tkinter菜单创建无法正常工作

时间:2017-02-01 14:57:03

标签: python python-2.7 tkinter menu python-3.5

我是编程新手,正在尝试使用Tkinter包在Python中创建菜单。但每当我在IDLE中运行脚本时,显示的所有内容都是顶级(根)窗口。

这是我的剧本:

from tkinter import *
from tkinter import ttk

root.option_add('*tearOff', False)

menubar1 = Menu(root)
root.configure(menu = menubar1)
file = Menu(menubar1)
edit = Menu(menubar1)
help_ =  Menu(menubar1)
tools = Menu(menubar1)
other = Menu(menubar1)

menubar1.add_cascade(menu = file, label = 'File')
menubar1.add_cascade(menu = edit, label = 'Edit')
menubar1.add_cascade(menu = help_, label = 'Help')
menubar1.add_cascade(menu = tools, label = 'Tools')
menubar1.add_cascade(menu = other, label = 'Other')

知道为什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

正如评论所指出的那样,令人惊讶的是您的代码完全有效:在您尝试使用option_add之前未定义root,因此它将触发NameError: name 'root' is not defined

但如果你定义它,工作。有人已经对该解决方案发表评论。 tkinter.Tk实例是您首先定义根以创建窗口的方式。 mainloop()是您维护该窗口的方法。它比听起来更容易:

from tkinter import *
import tkinter as tk # you could just say 'import tkinter', but 'tk' is easier to type

root = tk.Tk() # or, as @TidB mentioned, tkinter.Tk() if you're importing it as it is

root.option_add('*tearOff', False)
# insert all your code....
# and so on...
menubar1.add_cascade(menu = other, label = 'Other')

root.mainloop() # keeps the window up

基本上,只需添加mainloop()和Tk()即可。

此外,由于from tkinter import *自然导入所有内容,因此您几乎肯定不需要from tkinter import ttk(您的第二行代码)。