在tkinter OptionMenu中的所选项目旁边添加支票

问题描述

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

enter image description here

我刚刚添加一个新示例:

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="",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选项。要解决此问题,请签出this

希望这对您有所帮助,请让我知道是否有任何错误或疑问。

欢呼

,

您可以使用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,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="",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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...