当 Combobox 选择时通过索引获取值并将该值分配给 Tkinter 中的 "textvariable"

Get a value by index when Combobox selected and assign the value to "textvariable" in Tkinter

我是 Python 和 Tkinter 的新手。我遵循 Python + MySQL. How can I pass the ID of a field from a ComboBox to the database? 作为通过索引获取值的指南。

我的代码:

import tkinter as tk
from tkinter import ttk

# --- functions ---

def run_sql(event):
    #print(event)

    index = cb.current()
    # print('index:', index)

    row = c[index]

    print('ID:', row[0])

    print(data.set(row[0]))
    print(cb.set(row[0]))
    
# --- main ---

c = [
  (123, 'A'),
  (124, 'B'),
  (125, 'C'),
]

root = tk.Tk()
data = tk.StringVar()
cb = ttk.Combobox(root, textvariable=data,values=[row[1] for row in c], state='readonly')
cb.pack()
cb.bind("<<ComboboxSelected>>", run_sql)

root.mainloop()

输出:

ID: 123
None
None

我正在寻找一种方法来获取 123 的值,只要我使用 data.set(row[0])cb.set(row[0]) 而不是 None

感谢您的帮助。

您可以使用包装函数

def data_set(value):
    data.set(value)
    return [row[1] for row in c if row[0] == value]

但这可能 return 多个值。

更好的解决方案是:

def data_set(index):
    data.set(c[index][0])
    return c[index][1]