如何获取 Tkinter 组合框中所选选项的索引

问题描述 投票:0回答:2

下面的代码让我打印出组合框中选定的值,但我需要打印(获取)列表中选定项目的索引号。我怎样才能做到这一点?

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()
python tkinter combobox python-2.x
2个回答
7
投票

在组合框上使用

current
方法。

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()

2
投票

是的,如果您将

bind()
current()
结合起来,就可以。

这是一个快速演示:

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()
© www.soinside.com 2019 - 2024. All rights reserved.