Get combobox value in python

45,046

Solution 1

You cannot have two Tk() windows. one must be Toplevel.

To get the variable you can do box_value.get()

Example of a drop down box :

class TableDropDown(ttk.Combobox):
    def __init__(self, parent):
        self.current_table = tk.StringVar() # create variable for table
        ttk.Combobox.__init__(self, parent)#  init widget
        self.config(textvariable = self.current_table, state = "readonly", values = ["Customers", "Pets", "Invoices", "Prices"])
        self.current(0) # index of values for current table
        self.place(x = 50, y = 50, anchor = "w") # place drop down box 
        print(self.current_table.get())

Solution 2

from tkinter import *
from tkinter import ttk
from tkinter import messagebox

root = Tk()

root.geometry("400x400")
# Length and width window :D

cmb = ttk.Combobox(root, width="10", values=("prova","ciao","come","stai"))
# to create checkbox
# cmb = Combobox

#now we create simple function to check what user select value from checkbox

def checkcmbo():

     if cmb.get() == "prova":
         messagebox.showinfo("What user choose", "you choose prova")

    # if user select prova show this message 
    elif cmb.get() == "ciao":
        messagebox.showinfo("What user choose", "you choose ciao")

     # if user select ciao show this message 
    elif cmb.get() == "come":
        messagebox.showinfo("What user choose", "you choose come")

    elif cmb.get() == "stai":
        messagebox.showinfo("What user choose", "you choose stai")

    elif cmb.get() == "":
        messagebox.showinfo("nothing to show!", "you have to be choose something")


cmb.place(relx="0.1",rely="0.1")

btn = ttk.Button(root, text="Get Value",command=checkcmbo)
btn.place(relx="0.5",rely="0.1")

root.mainloop()
Share:
45,046
Damien
Author by

Damien

Updated on August 07, 2021

Comments

  • Damien
    Damien over 2 years

    I'm developing an easy program and I need to get the value from a Combobox. It is easy when the Combobox is in the first created window but for example if I have two windows and the Combobox is in the second, I am not able read the value from that.

    For example :

    from tkinter import *
    from tkinter import ttk
    
    def comando():
        print(box_value.get())
    
    parent = Tk() #first created window
    ciao=Tk()     #second created window
    box_value=StringVar()
    coltbox = ttk.Combobox(ciao, textvariable=box_value, state='readonly')
    coltbox["values"] = ["prova","ciao","come","stai"]
    coltbox.current(0)
    coltbox.grid(row=0)
    Button(ciao,text="Salva", command=comando, width=20).grid(row=1)
    mainloop()
    

    If I change the parent of the widget from ciao to parent it works! Can anyone explain me?