Lomonos1917
@Lomonos1917
Делаю IRE для предприятия с нуля.

Как получить имя ячейки ttk.treeview как переменную при выборе её кликом?

Есть окно tkinter, в котором расположен виджет treeview в виде таблицы. Таблица берёт данные из базы данных на sqlite3. Данные динамичные и будут регулярно меняться, добавляться, удаляться. В первом столбце таблицы хранится идентификатор для каждой строки - по нему и нужно будет в дальнейшем работать. Необходимо: при клике на строчку вывести этот идентификатор как переменную.

Вот код таблицы:
class Table(tk.Frame):
    def __init__(self, parent=None, headings=tuple(), rows=tuple()):
        super().__init__(parent)
        
        table = ttk.Treeview(self, show="headings", selectmode="browse")
        table["columns"] = headings
        table["displaycolumns"] = headings
  
        for head in headings:
            table.heading(head, text=head, anchor=tk.CENTER)
            table.column(head, anchor=tk.CENTER, width=20)
  
        for row in rows:
            table.insert('', tk.END, values=tuple(row))
  
        scrolltable = tk.Scrollbar(self, command=table.yview)
        scrolltable1 = tk.Scrollbar(self, command= table.xview)
        table.configure(yscrollcommand=scrolltable.set)
        table.configure(xscrollcommand=scrolltable1.set)
        scrolltable.pack(side=tk.RIGHT, fill=tk.Y)
        scrolltable1.pack(side=tk.BOTTOM, fill=tk.X)
        table.pack(expand=tk.YES, fill=tk.BOTH)

data = (',')
with sqlite3.connect('mydatabase.db') as connection:
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM service_data WHERE [Вид обслуживания] ='РЕМОНТ'")
    data = (row for row in cursor.fetchall())
60e7fc5619000210392861.jpeg
  • Вопрос задан
  • 851 просмотр
Решения вопроса 1
shabelski89
@shabelski89
engineer
Нужно установить фокус и потом получать данные из выделенной строки TreeView, примерно так
row_id = table.focus()
print(row_id)
if row_id:
    order_num = table.item(row_id)['values'][0]
    print(order_num)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы