简体   繁体   中英

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()

Here is a very simple example of using ttk.Treeview to display your data from database:

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)

Keep in mind that since this is a ttk widget, you will have to import it first:

from tkinter import ttk

If you want your column to have separate widths, then check this answer

enter image description here

Once I clicked the query to show in treeview widget, it duplicates all the records in database. How to remove duplicate records and show only the records that has been added in database?

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM