Заполнить TreeView с информацией от sql? - PullRequest
0 голосов
/ 18 марта 2020

Я хотел бы попросить несколько советов по поводу кода, который у меня есть ниже:

from tkinter import *
from tkinter import ttk
import sqlite3

root = Tk()
root.geometry("500x500")
root.title("Inventory Balance")


def db():
    global conn, mycursor
    conn = sqlite3.connect('MyStock.sql3')
    mycursor = conn.cursor()


def data():`
    tree.delete(*tree.get_children())
    mycursor.execute("SELECT * FROM ItemCode")
    for row in myscursor:
        tree.insert('', 'end', values=row[1:6])

    conn.close()

frame = Frame(root)
frame.pack()

tree = ttk.Treeview(frame, columns = (1,2,3,4,5), height = 20, show = "headings")
tree.pack(side = 'top')

tree.heading(1, text="ItemCode")
tree.heading(2, text="Description")
tree.heading(3, text="Category")
tree.heading(4, text="Unit")
tree.heading(5, text="Quantity")

tree.column(1, width = 100)
tree.column(2, width = 100)
tree.column(3, width = 100)
tree.column(4, width = 100)
tree.column(5, width = 100)

# Inserting Scrollbar
scroll = ttk.Scrollbar(frame, orient="vertical", command=tree.yview)
scroll.pack(side = 'right', fill = 'y')

tree.configure(yscrollcommand=scroll.set)

root.mainloop()

Позже мне придется использовать его в качестве основного экрана, добавлять кнопки и иметь постоянно обновляемое древовидное представление, отображаемое как запас используется, а затем обновляется с помощью другого сценария python tkinter. Моя основная проблема заключается в том, что он читает правильный столбец (ItemCode, Description, Category, Unit, Количества), но информация, содержащаяся в базе данных, не отображается в виде дерева.

Пожалуйста, помогите и не стесняйтесь спрашивать дополнительная информация.

Я отредактировал скрипт в соответствии с рекомендациями и все равно получаю следующее: введите описание изображения здесь

Еще раз спасибо

1 Ответ

0 голосов
/ 18 марта 2020

В вашем коде есть две проблемы:

  • с использованием info при вставке записи в древовидную структуру. row следует использовать
  • treeview.insert(...) ожидает два позиционных аргумента: parent и index

Поэтому измените:

info = mycursor.fetchall()
for row in info:
    tree.insert(values=(info[1], info[2], info[3], info[4], info[5]))

на:

for row in mycursor:
    tree.insert('', 'end', values=row[1:6])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...