How can I create a dropdown menu from a List in Tkinter? How can I create a dropdown menu from a List in Tkinter? tkinter tkinter

How can I create a dropdown menu from a List in Tkinter?


To create a "drop down menu" you can use OptionMenu in tkinter

Example of a basic OptionMenu:

from Tkinter import *master = Tk()variable = StringVar(master)variable.set("one") # default valuew = OptionMenu(master, variable, "one", "two", "three")w.pack()mainloop()

More information (including the script above) can be found here.


Creating an OptionMenu of the months from a list would be as simple as:

from tkinter import *OPTIONS = ["Jan","Feb","Mar"] #etcmaster = Tk()variable = StringVar(master)variable.set(OPTIONS[0]) # default valuew = OptionMenu(master, variable, *OPTIONS)w.pack()mainloop()

In order to retrieve the value the user has selected you can simply use a .get() on the variable that we assigned to the widget, in the below case this is variable:

from tkinter import *OPTIONS = ["Jan","Feb","Mar"] #etcmaster = Tk()variable = StringVar(master)variable.set(OPTIONS[0]) # default valuew = OptionMenu(master, variable, *OPTIONS)w.pack()def ok():    print ("value is:" + variable.get())button = Button(master, text="OK", command=ok)button.pack()mainloop()

I would highly recommend reading through this site for further basic tkinter information as the above examples are modified from that site.


Here Is my function which will let you create a Combo Box with values of files stored in a Directory and Prints the Selected Option value in a Button Click.

from tkinter import*import os, fnmatchdef submitForm():        strFile = optVariable.get()    # Print the selected value from Option (Combo Box)        if (strFile !=''):                print('Selected Value is : ' + strFile)root = Tk()root.geometry('500x500')root.title("Demo Form ")label_2 = Label(root, text="Choose Files ",width=20,font=("bold", 10))label_2.place(x=68,y=250)flist = fnmatch.filter(os.listdir('.'), '*.mp4')optVariable = StringVar(root)optVariable.set("   Select   ") # default valueoptFiles = OptionMenu(root, optVariable,*flist)optFiles.pack()optFiles.place(x=240,y=250)Button(root, text='Submit', command=submitForm, width=20,bg='brown',fg='white').place(x=180,y=380)root.mainloop()