How to Get Index of Selected Option inTkinter Combobox

13,454

Solution 1

Use the current method on the combobox.

import Tkinter
import tkMessageBox
from Tkinter import *
import ttk
from ttk import *

app = Tk()

def OptionCallBack(*args):
    print variable.get()
    print so.current()

variable = StringVar(app)
variable.set("Select From List")
variable.trace('w', OptionCallBack)


so = ttk.Combobox(app, textvariable=variable)
so.config(values =('Tracing Upstream', 'Tracing Downstream','Find Path'))
so.grid(row=1, column=4, sticky='E', padx=10)


app.mainloop()

Solution 2

Yes you can if you combine bind() with current().

Here is a quick demo:

import Tkinter
import tkMessageBox
from Tkinter import *
import ttk
from ttk import *

app = Tk()

def display_selected_item_index(event): 
   global so
   print 'index of this item is: {}\n'.format(so.current())

def OptionCallBack(*args):
    print variable.get()

variable = StringVar(app)
variable.set("Select From List")
variable.trace('w', OptionCallBack)

so = ttk.Combobox(app, textvariable=variable)
so.config(values =('Tracing Upstream', 'Tracing Downstream','Find Path'))
so.grid(row=1, column=4, sticky='E', padx=10)    
so.bind("<<ComboboxSelected>>", display_selected_item_index)  

app.mainloop()
Share:
13,454
Behseini
Author by

Behseini

Updated on June 24, 2022

Comments

  • Behseini
    Behseini almost 2 years

    Following code lets me to print out the selected value from the Combobox, but I need to print(get) the indexnumber of selected item in the list. Can you please let me know how to do that?

    import Tkinter
    import tkMessageBox
    from Tkinter import *
    import ttk
    from ttk import *
    
    app = Tk()
    
    def OptionCallBack(*args):
        print variable.get()
    
    variable = StringVar(app)
    variable.set("Select From List")
    variable.trace('w', OptionCallBack)
    
    so = ttk.Combobox(app, textvariable=variable)
    so.config(values =('Tracing Upstream', 'Tracing Downstream','Find Path'))
    so.grid(row=1, column=4, sticky='E', padx=10)
    
    
    app.mainloop()