0

如何在 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()
4

2 回答 2

1

只需ttk为这种现代风格使用小部件,尝试说类似的话:

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

这样做的效果与您尝试实现的效果非常相似或可能相同。

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

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

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

干杯

于 2020-09-16T19:47:35.697 回答
0

您可以使用以下方法获得类似的效果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()
于 2020-09-18T15:49:52.620 回答