当 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]
我是 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]