У меня есть программа Python, подключенная к базе данных SQLite 3 с Tkinter на интерфейсе. Моя таблица базы данных (тематический список) состоит из трех столбцов: [id (уникальное целое число), тема (текст), серийный номер (уникальное целое число)]. Вот моя программа:
import sqlite3
from tkinter import *
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute('SELECT COUNT() FROM subjectlist')
number = (c.fetchone()[0])
c.execute('SELECT * FROM subjectlist ORDER BY serial')
data = c.fetchall()
c.close
conn.close()
root = Tk()
listbox = Listbox(root)
listbox.pack()
for i in range(number):
listbox.insert(END, data[i][1])
def get_serial():
print(listbox.get(listbox.curselection()))
btn = Button(root, text="Show serial", command=lambda: get_serial())
btn.pack()
mainloop()
В настоящее время во время выполнения, когда я щелкаю элемент в списке (ведьма в основном показывает все значения столбца темы), а затем нажимаю кнопку Tkinter, я получаю тему, на которую я нажал. Вместо этого я хочу получить серийный номер, соответствующий теме. Обратите внимание, что столбец темы может иметь одинаковое значение в двух или более разных строках. Как мне добиться этого?
Вот еще один пример; Если у меня есть эта таблица:
Я хочу, чтобы графический интерфейс сначала отображал все предметы в списке. Затем я нажимаю Cats (в строке идентификатора 3), а затем нажимаю кнопку, я хочу, чтобы программа напечатала мне серийный номер 4.