簡體   English   中英

如何在Tkinter TreeView中輸出sqlite3數據

[英]How to output sqlite3 data in tkinter treeview

上午有有在我的所有記錄如何輸出問題sqlite3分貝到tkinter treeview 。它僅輸出在最后一個記錄db ,並記錄不會出現在對后援指定的列print方法印刷的所有db記錄我的終端,但不會將所有記錄輸出到treeview小部件。

歡迎您提出建議以實現這一目標

from tkinter import ttk
import tkinter as tk
import sqlite3


def connect():
    conn = sqlite3.connect("TRIAL.db")
    cur = conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS profile(id INTEGER PRIMARY KEY, 
First TEXT, Surname TEXT)")
    conn.commit()
    conn.close()


def View():
    conn = sqlite3.connect("TRIAL.db")
    cur = conn.cursor()
    cur.execute("SELECT * FROM profile")
    rows = cur.fetchall()
    for row in rows:
        print(row) # it print all records in the database
    tree.insert("", tk.END, values=row)
    conn.close()


connect()  #  this to create the db

root = tk.Tk()
root.geometry("400x400")

tree= ttk.Treeview(root, column=("column", "colunn1"))
tree.heading("#0", text="NUMBER")
tree.heading("#1", text="FIRST NAME")
tree.heading("#2", text="SURNAME")
tree.pack()

b2 = tk.Button(text="view data", command=View)
b2.pack()

root.mainloop()

您的代碼中有兩個問題:

  • 第一個是tree.insert("", tk.END, values=row)不在for循環內,因此僅最后一行將插入到樹視圖中。
  • 第二個是#0列是一個特殊列,其值是使用text=...設置的,而不是使用values=(...) 為了正確顯示數據,您至少有兩種選擇:

    • 第一種是將tree.insert("", tk.END, values=row) tree.insert("", tk.END, text=row[0], values=row[1:])
    • 第二個是不使用特殊列#0 ,因為樹視圖用作表,所以您不需要它。 創建樹時,使用選項show='headings'隱藏#0列並創建3列:

       from tkinter import ttk import tkinter as tk import sqlite3 def connect(): conn = sqlite3.connect("TRIAL.db") cur = conn.cursor() cur.execute("CREATE TABLE IF NOT EXISTS profile(id INTEGER PRIMARY KEY, First TEXT, Surname TEXT)") conn.commit() conn.close() def View(): conn = sqlite3.connect("TRIAL.db") cur = conn.cursor() cur.execute("SELECT * FROM profile") rows = cur.fetchall() for row in rows: print(row) # it print all records in the database tree.insert("", tk.END, values=row) conn.close() connect() # this to create the db root = tk.Tk() root.geometry("400x400") tree= ttk.Treeview(root, column=("column1", "column2", "column3"), show='headings') tree.heading("#1", text="NUMBER") tree.heading("#2", text="FIRST NAME") tree.heading("#3", text="SURNAME") tree.pack() b2 = tk.Button(text="view data", command=View) b2.pack() root.mainloop() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM