Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Get Index of Selected Option inTkinter Combobox

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()
like image 985
Behseini Avatar asked Mar 09 '23 13:03

Behseini


2 Answers

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()
like image 72
Khristos Avatar answered Mar 12 '23 01:03

Khristos


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()
like image 39
Billal Begueradj Avatar answered Mar 12 '23 02:03

Billal Begueradj