应该使用什么 tkinter 小部件来显示和存储数据?可以用标签吗?我正在使用 sqlite3 作为数据库

what tkinter widget should use to display and store data? Its okay to use a label? I'm using sqlite3 for database

def query():
    global record
    conn = sqlite3.connect('billing.db')
    c = conn.cursor()
    c.execute("SELECT *, oid FROM billing")
    records = c.fetchall()
    # print(records)

    print_records = ''
    for record in records:
        print_records += str(record[0]) + "    " + str(record[1]) + "         " + str(record[2]) \
                         + "     " + str(record[3]) + "     " + str(record[4]) + "     " + str(record[5]) \
                         + "     " + str(record[6]) + "     " + str(record[7]) + "\n"

        show = Label(root, width=120,  text=print_records, anchor=NW)
        show.grid(row=2, column=3, columnspan=2)
        show.place(x=402, y=50, height=510)
        show.config(font=("TimesNewRoman", 10))

    conn.commit()
    conn.close()

这是一个使用 ttk.Treeview 显示数据库数据的非常简单的示例:

def query():
    # Same code above...
    records = [('Hello','World'),('This','is'),('Treeview','widget')] # This will c.fetchall()
    
    cols = ('First column','Second columns') # Change this with whatever you want your column name to be
    tree = ttk.Treeview(root,columns=cols,show='headings',height=100)
    tree.pack(padx=10,pady=10)

    for col in cols: # Set treeview attributes
        tree.heading(col,text=col)
        tree.column(col,width=100,anchor='center')

    for items in records: # Insert values inside the treeview
        tree.insert('','end',values=items)

请记住,由于这是一个 ttk 小部件,您必须先导入它:

from tkinter import ttk

如果您希望您的列具有单独的宽度,请选中

enter image description here

一旦我单击查询以在树视图小部件中显示,它就会复制数据库中的所有记录。如何去除重复记录,只显示数据库中已添加的记录?

def show(self):
    global record
    conn = sqlite3.connect('billing.db')
    c = conn.cursor()
    c.execute("SELECT *, oid FROM billing")
    self.records = c.fetchall()

    for items in self.records:
        self.table.insert('', 'end', values=items)