可以使用 HTML optgroup-style 组选项在 tkinter/ttk 中创建下拉菜单吗?

Possible to create a dropdown menu in tkinter/ttk with HTML optgroup-style grouping of options?

我想使用数组字典中的 tkinter 创建一个下拉菜单,我希望键代表菜单选项的 higher-level 组,值数组中的字符串代表可用的实际选项给用户。换句话说,单击下拉菜单时,下拉菜单应该类似于在 HTML 中使用 optgroup 标记创建的下拉菜单,其中既有不可选择的标签作为组标题,也有可选择的标签作为实际选项。

我的字典看起来是这样的:

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

用户应该能够从下拉列表中选择 'basil'、'beef'、'salt' 等,但不能选择 'Herbs'、'Meats' 或 'Spices',它应该只作为不同成分组的静态标题出现。这可能仅使用 tkinter/ttk?

可能这至少会对你有所帮助

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()