📜  Python| Tkinter 中的菜单小部件(1)

📅  最后修改于: 2023-12-03 15:34:17.541000             🧑  作者: Mango

Python | Tkinter 中的菜单小部件

菜单是 Tkinter 中最重要的小部件之一。它允许用户在应用程序中选择操作。 Tkinter 中的菜单可以使用 Menu 小部件创建,并通过添加菜单项来丰富菜单。

创建菜单

下面的代码片段创建了一个空白菜单:

from tkinter import *

root = Tk()

menu_bar = Menu(root)
root.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='File', menu=file_menu)

root.mainloop()

在上面的代码中,我们使用 Menu() 方法创建了一个菜单对象,并将其分配给窗口的菜单选项卡。然后,我们创建了一个名为 File 的下拉菜单。

使用 add_cascade() 方法将我们的下拉菜单添加为顶级菜单,然后我们在主窗口中运行 mainloop()。

创建菜单项

在上面的示例中我们创建了一个名为 File 的下拉菜单。在下拉菜单中添加选项可以使用 add_command() 方法。

from tkinter import *

root = Tk()

menu_bar = Menu(root)
root.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='File', menu=file_menu)

file_menu.add_command(label='New')
file_menu.add_command(label='Open')
file_menu.add_command(label='Save')
file_menu.add_separator()
file_menu.add_command(label='Exit', command=root.quit)

root.mainloop()

在上面的代码中,我们按如下方式添加菜单项:

  • 使用 add_command() 方法添加一个名为 New 的菜单项。
  • 使用 add_command() 方法添加一个名为 Open 的菜单项。
  • 使用 add_command() 方法添加一个名为 Save 的菜单项。
  • 使用 add_separator() 方法添加分隔符。
  • 使用 add_command() 方法添加一个名为 Exit 的菜单项,当用户单击时会调用 root.quit 方法终止程序。
创建复选框和单选框菜单项

我们可以使用 add_checkbutton() 和 add_radiobutton() 方法创建复选框和单选框菜单项。

from tkinter import *

root = Tk()

menu_bar = Menu(root)
root.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='File', menu=file_menu)

file_menu.add_command(label='New')
file_menu.add_command(label='Open')
file_menu.add_command(label='Save')
file_menu.add_separator()

edit_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='Edit', menu=edit_menu)

edit_menu.add_checkbutton(label='Show Line Numbers')
edit_menu.add_checkbutton(label='Show End-of-Line Characters')
edit_menu.add_separator()
edit_menu.add_radiobutton(label='Light Theme')
edit_menu.add_radiobutton(label='Dark Theme')

root.mainloop()

在上面的代码中,我们创建了一个名为 Edit 的下拉菜单,并添加了四个菜单选项:

  • Show Line Numbers:复选框菜单项。
  • Show End-of-Line Characters:复选框菜单项。
  • Light Theme:单选框菜单项。
  • Dark Theme:单选框菜单项。
合并菜单

可以通过合并多个菜单来创建一个更复杂的菜单。使用 add_cascade() 包含更多的菜单,它将菜单作为另一个菜单的子级添加。

from tkinter import *

root = Tk()

menu_bar = Menu(root)
root.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='File', menu=file_menu)

edit_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='Edit', menu=edit_menu)

view_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='View', menu=view_menu)

file_menu.add_command(label='New')
file_menu.add_command(label='Open')
file_menu.add_command(label='Save')
file_menu.add_separator()

edit_menu.add_checkbutton(label='Show Line Numbers')
edit_menu.add_checkbutton(label='Show End-of-Line Characters')
edit_menu.add_separator()
edit_menu.add_radiobutton(label='Light Theme')
edit_menu.add_radiobutton(label='Dark Theme')

view_menu.add_cascade(label='Zoom In')
view_menu.add_cascade(label='Zoom Out')

zoom_menu = Menu(view_menu, tearoff=0)
view_menu.add_cascade(label='Zoom', menu=zoom_menu)

zoom_menu.add_command(label='100%')
zoom_menu.add_command(label='75%')
zoom_menu.add_command(label='50%')
zoom_menu.add_command(label='25%')
zoom_menu.add_separator()
zoom_menu.add_command(label='Fit Screen')

root.mainloop()

在上面的代码中,我们创建了三个菜单:

  • File
  • Edit
  • View

每个菜单都有自己的菜单项。在 View 菜单中添加了一个子菜单 Zoom,并将菜单项 Zoom In 和 Zoom Out 与其关联。)viewDidLoad 方法由 Cocoa 框架调用来建立视图层次。