在 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()
如何在 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
选项。为了克服这个问题,检查
希望对您有所帮助,如有任何错误或疑问,请告诉我。
干杯
你可以使用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()