可以使用HTML optgroup样式的选项分组在tkinter / ttk中创建下拉菜单吗?

时间:2018-05-16 02:38:54

标签: python tkinter optgroup

我想使用来自数组字典的tkinter创建一个下拉菜单,其中我希望键表示菜单选项的更高级别组,以及值数组中的字符串表示用户可用的实际选择。换句话说,当单击下拉列表时,下拉列表应该类似于使用optgroup标记在HTML中创建的下拉列表,其中有两个不可选择的标签用作组标题,可选标签用作实际选项。

我的字典看起来像这样:

ingredients = {
    "Herbs":
        ["basil",
        "oregano",
        "thyme"],
     "Meats":
        ["chicken",
          "beef",
          "venison",],
     "Spices":
        ["pepper",
          "salt",
          "chilli powder",
          "cumin"]
    }

用户应该可以从下拉菜单中选择'罗勒','牛肉','盐'等,但不能选择'草药','肉'或'香料',它们只能作为静态标题出现。不同的成分组。这可能只使用tkinter / ttk吗?

1 个答案:

答案 0 :(得分:1)

这可能会帮助你至少

from tkinter import *

root = Tk()
root.title("Tk dropdown example")

mainframe = Frame(root)

mainframe.grid()

tkvar = StringVar(root)

ingredients = {
    "Herbs":
        ["basil",
        "oregano",
        "thyme"],
     "Meats":
        ["chicken",
          "beef",
          "venison",],
     "Spices":
        ["pepper",
          "salt",
          "chilli powder",
          "cumin"]
    }
c=[]
for k,v in ingredients.items():
    c.append(k)
    c.extend(v)
ddl = OptionMenu(mainframe, tkvar, *c)
Label(mainframe, text="Choose a dish").grid(row = 1, column = 1)
ddl.grid(row = 2, column =1)
for i in ingredients:
        ddl['menu'].entryconfigure(i, state = "disabled",font=('arial italic',11))

root.mainloop()