【问题标题】:Possible to create a dropdown menu in tkinter/ttk with HTML optgroup-style grouping of options?可以使用 HTML optgroup 样式的选项分组在 tkinter/ttk 中创建下拉菜单吗?
【发布时间】:2018-10-25 23:11:43
【问题描述】:

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

我的字典看起来像这样:

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

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

【问题讨论】:

    标签: python tkinter optgroup


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多