У меня есть Listbox и Combobox (использующий tkinter в Python) с функциями событий, и я не могу найти какой-либо связи между этими двумя событиями.
Я создал базу данных с sqlite3, в которой хранятся расходы (соответствующие столбцы: «категория», «стоимость»).
В моем графическом интерфейсе у меня есть список, который содержит все строки базы данных. Я добавил Combobox, который позволяет мне выбрать определенную категорию, и после того, как я щелкну одну из категорий, я могу видеть только записи с этой конкретной категорией в списке (простая функция привязки и события).
В дополнениек этому у меня есть виджет входа. Если щелкнуть конкретную строку в списке, столбец стоимости этой строки будет вставлен в виджет ввода.
Проблема возникает, когда я сначала запускаю событие Combobox, а затем пытаюсь щелкнуть конкретную строку в списке, чтобы вызвать событие списка. Ничего не вставлено в виджет ввода.
Мой код для этих функций событий:
global selected_cat
"""event triggered by clicking on a row in Combobox.
lb is Listbox widget.
selected_cat will store the selected category.
db is the Database
"""
def get_selected_category(event):
selected_cat=cat.get()
lb.delete(0,END)
for i in db.search_by_category(selected_cat):
lb.insert(END,i)
"""event triggered by clicking on a row in Listbox.
lb is Listbox widget.
selected_tuple is a tuple which contains (id,category,cost)
"""
def get_selected_row(event):
global selected_tuple
print(lb.curselection())
index=lb.curselection()[0]
if index != ():
selected_tuple=lb.get(index)
print(selected_tuple)
e1.delete(0,END)
e1.insert(END,str(selected_tuple[2])+" ILS")
это привязки:
lb.bind('<<ListboxSelect>>',get_selected_row)
cat.bind('<<ComboboxSelected>>', get_selected_category)