原文: https://pythonspot.com/tk-dropdown-example/

Tkinter 支持下拉菜单。 这类似于操作系统上的标准组合框。

该小部件称为OptionMenu,所需的参数为:帧,tk 变量和带有选择项的字典。

Tk 下拉示例 - 图1

Tkinter 下拉示例

下面的示例创建一个带有组合框的 Tkinter 窗口。

  1. from Tkinter import *
  2. import Tkinter as ttk
  3. from ttk import *
  4. root = Tk()
  5. root.title("Tk dropdown example")
  6. # Add a grid
  7. mainframe = Frame(root)
  8. mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
  9. mainframe.columnconfigure(0, weight = 1)
  10. mainframe.rowconfigure(0, weight = 1)
  11. mainframe.pack(pady = 100, padx = 100)
  12. # Create a Tkinter variable
  13. tkvar = StringVar(root)
  14. # Dictionary with options
  15. choices = { 'Pizza','Lasagne','Fries','Fish','Potatoe'}
  16. tkvar.set('Pizza') # set the default option
  17. popupMenu = OptionMenu(mainframe, tkvar, *choices)
  18. Label(mainframe, text="Choose a dish").grid(row = 1, column = 1)
  19. popupMenu.grid(row = 2, column =1)
  20. # on change dropdown value
  21. def change_dropdown(*args):
  22. print( tkvar.get() )
  23. # link function to change dropdown
  24. tkvar.trace('w', change_dropdown)
  25. root.mainloop()

首先创建一个 Tk 对象,并将其传递给使用Frame()创建的 tkinter 框架

  1. root = Tk()
  2. root.title("Tk dropdown example")
  3. mainframe = Frame(root)

将一个网格添加到框架,该框架将容纳组合框。

  1. mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
  2. mainframe.columnconfigure(0, weight = 1)
  3. mainframe.rowconfigure(0, weight = 1)
  4. mainframe.pack(pady = 100, padx = 100)

弹出菜单包含在变量选项中定义的选项列表。 使用以下行创建一个 Tkinter 变量:

  1. tkvar = StringVar(root)

变量的默认值是使用.set()方法设置的。 我们使用以下方法创建 Tkinter 组合框:

  1. popupMenu = OptionMenu(mainframe, tkvar, *choices)

并将回调方法change_dropdown链接到此组合框。