【问题标题】:Adding a check next to the selected item in tkinter OptionMenu在 tkinter OptionMenu 中的选定项目旁边添加一个检查
【发布时间】:2021-01-03 11:32:24
【问题描述】:

如何在 tkinter GUI 的 OptionMenu 中在当前选定项目旁边添加一个复选标志(或突出显示它)?想法是当我再次点击选择另一个项目时,我可以很容易地看到选择了哪一个(类似于下图)

我刚刚添加了一个新示例:

from tkinter import *

OptionList = [
"Aries",
"Taurus",
"Gemini",
"Cancer"
] 

app = Tk()

app.geometry('100x200')

variable = StringVar(app)
variable.set(OptionList[0])

opt = OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=('Helvetica', 12))
opt.pack(side="top")


labelTest = Label(text="", font=('Helvetica', 12), fg='red')
labelTest.pack(side="top")

def callback(*args):
    labelTest.configure(text="The selected item is {}".format(variable.get()))

variable.trace("w", callback)

app.mainloop()

【问题讨论】:

  • tkinter 中有Checkbutton,其作用类似于复选框。
  • 我知道,我可以将它绑定到 OptionMenu 吗?
  • 这能回答你的问题吗? Tkinter drop down list of check-boxes/combo-boxes
  • 感谢您的回复,但我正在寻找更类似于我在问题中添加的图片
  • 谢谢,我已经决定这样做了,因为我在 tk 上没有找到方法

标签: user-interface tkinter optionmenu tkinter.optionmenu


【解决方案1】:

你可以使用tk.OptionMenu获得类似的效果:

from tkinter import *

OptionList = [
"Aries",
"Taurus",
"Gemini",
"Cancer"
] 

app = Tk()

app.geometry('300x200')

variable = StringVar(app)
variable.set(OptionList[0])

opt = OptionMenu(app, variable, None) # need to supply at least one menu item
opt.config(width=90, font=('Helvetica', 12))
opt.pack(side="top")

# populate the menu items
menu = opt['menu']
menu.delete(0) # remove the None item
for item in OptionList:
    menu.add_radiobutton(label=item, variable=variable)

labelTest = Label(text="", font=('Helvetica', 12), fg='red')
labelTest.pack(side="top")

def callback(*args):
    labelTest.configure(text="The selected item is {}".format(variable.get()))

variable.trace("w", callback)

app.mainloop()

【讨论】:

    【解决方案2】:

    只需使用 ttk 小部件来实现这种现代风格,尝试这样说:

    from tkinter import ttk
    ....
         #arguments  -  master  variable     default      *values
    opt = ttk.Optionmenu(app, variable, OptionList[0], *OptionList)
    

    由此产生的效果与您尝试实现的效果非常相似或可能相同。

    你可能注意到这里多了一个第三个位置参数,它实际上是这里指定的default=OptionList[0] 参数(特定于ttk.Optionmenu),它只是选项菜单将显示的默认值,忽略这可能会导致一些错误在 optionmenu 的外观中,例如 this

    还要记住,它也没有font 选项。要克服这个问题,请检查this

    希望这对您有所帮助,如果有任何错误或疑问,请告诉我。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2015-09-23
      • 2021-04-29
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      相关资源
      最近更新 更多