« Basics of Python Tkinter « OptionMenu

Components in our GUI window
Our Tkinter GUI will have three Buttons and one OptionMenu.
To keep it simple we will not add more interlocks to the process like checking the existing options before adding.
Each button will execute a function associated with Click event of it. Each function perform the respective action. Here is a list of Buttons, the function name and action to perform.
Component ( Text ) | Function | Action performed by the Function |
b1 ( Remove All ) | my_remove() | Removes all the options of the OptionMenu |
b2 ( Add All Opt) | my_add() | Add all the options to the OptionMenu |
b3 (Remove Selected) | my_remove_sel() | Removes selected Option |
Create the window and add components
import tkinter as tk
my_w = tk.Tk()
my_w.geometry("350x200") # Size of the window
my_w.title("www.plus2net.com") # Adding a title
my_list = ["PHP","MySQL","Python","HTML","JQuery"]
options = tk.StringVar(my_w)
options.set(my_list[0]) # default value
om1 =tk.OptionMenu(my_w, options, *my_list)
om1.grid(row=2,column=4)
b1 = tk.Button(my_w, text='Remove All', command=lambda: my_remove() )
b1.grid(row=1,column=2)
b2 = tk.Button(my_w, text='Add All Opt', command=lambda: my_add() )
b2.grid(row=2,column=2)
b3 = tk.Button(my_w, text='Remove Selectd', command=lambda: my_remove_sel() )
b3.grid(row=3,column=2)
Each of the three Buttons we used here are associated to three different functions ( command=lambda: my_add()).
my_remove()
It deletes the default selection first and then it removes all the options.
my_add()
First it removes all the option by calling the function my_remove(). Then one for loop is used for the list to show all elements and those elements are added to the OptionMenu.
my_remove_sel()
First we found out the index of the selected item. This index is used to remove ( delete ) the option. Finally the default selection of the OptionMenu is shifted to first element.
def my_remove():
options.set('') # remove default selection only, not the full list
om1['menu'].delete(0,'end') # remove full list
def my_add():
my_remove() # remove all options
for opt in my_list:
om1['menu'].add_command(label=opt, command=tk._setit(options, opt))
options.set(my_list[0]) # default value set
def my_remove_sel():
r_index=om1['menu'].index(options.get()) # index of selected option.
om1['menu'].delete(r_index) # deleted the option
options.set(om1['menu'].entrycget(0,"label")) # select the first one
Here is the full code.
import tkinter as tk
my_w = tk.Tk()
my_w.geometry("350x200") # Size of the window
my_w.title("www.plus2net.com") # Adding a title
my_list = ["PHP","MySQL","Python","HTML","JQuery"]
options = tk.StringVar(my_w)
options.set(my_list[0]) # default value
om1 =tk.OptionMenu(my_w, options, *my_list)
om1.grid(row=2,column=5)
b1 = tk.Button(my_w, text='Remove All', command=lambda: my_remove() )
b1.grid(row=1,column=2)
b2 = tk.Button(my_w, text='Add All Opt', command=lambda: my_add() )
b2.grid(row=2,column=2)
b3 = tk.Button(my_w, text='Remove Selectd', command=lambda: my_remove_sel() )
b3.grid(row=3,column=2)
def my_remove():
options.set('') # remove default selection only, not the full list
om1['menu'].delete(0,'end') # remove full list
def my_add():
my_remove() # remove all options
for opt in my_list:
om1['menu'].add_command(label=opt, command=tk._setit(options, opt))
options.set(my_list[0]) # default value set
def my_remove_sel():
r_index=om1['menu'].index(options.get())
om1['menu'].delete(r_index)
options.set(om1['menu'].entrycget(0,"label")) # select the first one
my_w.mainloop()
User can enter data in a text box and on click of a button the same data will be added as an option of an OptionMenu
Adding user entered text as Option of an OptionMenu.
« OptionMenu
← Subscribe to our YouTube Channel here