应该使用什么 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)
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)