在 tkinter OptionMenu 中的所选项目旁边添加一个检查

Adding a check next to the selected item in tkinter OptionMenu

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

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

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

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

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

由此产生的效果与您试图达到的效果非常相似,甚至可能相同。

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

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

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

干杯

你可以使用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()