A ttk optionmenu widget starts out with all of its values in the dropdown. Upon selecting any value, the first value in the list vanishes, never to reappear...
Does anyone know why? Is this a feature of the widget's design? Try it with the following:
import tkinter.ttk as ttk
import tkinter as tk
a = tk.Tk()
options = ['1', '2', '3']
value = tk.StringVar()
masterframe = ttk.Frame()
masterframe.pack()
dropdown = ttk.OptionMenu(masterframe, value, *options)
dropdown.pack()
a.mainloop()
Note - another user asked the same question here: OptionMenu won't show the first option when clicked (Tkinter)
They seem to've found a workaround, but not understood why it was happening.
UPDATE: actually this behaviour only appears when using the ttk widget. The tk widget works fine (albeit looking very ugly).
The signature of the ttk.OptionMenu command is this:
def __init__(self, master, variable, default=None, *values, **kwargs):
This is the docstring:
"""Construct a themed OptionMenu widget with master as the parent, the resource textvariable set to variable, the initially selected value specified by the default parameter, the menu values given by *values and additional keywords.
Notice the default
option which comes before the list of values. Instead of adding a blank item to the list of values, add whichever value you want as the default:
options = ['1', '2', '3']
dropdown = ttk.OptionMenu(masterframe, value, options[1], *options)