列表框在tkinter中显示数据库中的表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表框在tkinter中显示数据库中的表相关的知识,希望对你有一定的参考价值。

有没有一种方法可以显示以表格形式从数据库中获取的数据,并且我实际上可以复制其中的单个内容?目前,我使用列表框和滚动条定义了一个功能日志,并像这样通过它循环播放:

def logs():
    log = Toplevel(root)
    log.title('View all customers')
    con = mysql.connect(host='localhost', user='root',
                            password='*****', database='BOOK')
    c = con.cursor()

    c.execute("SELECT * FROM library")
    result = c.fetchall()

    for index, x in enumerate(result):
        num = 0
        for y in x:
            lookup_label = Label(log, text=y)
            lookup_label.grid(row=index+1, column=num)
            num +=1
    l1 = Label(log,text='ID',font=font_text)
    l2 = Label(log,text='S_ID',font=font_text)
    l3 = Label(log,text='S_NAME',font=font_text)
    l4 = Label(log,text='B_NAME',font=font_text)
    l5 = Label(log,text='Date Taken',font=font_text)
    l6 = Label(log,text='Date_Returned',font=font_text)
    l7 = Label(log,text='Status',font=font_text)
    btn_ext = Button(log,text='Exit',font=font_text,command=log.destroy,borderwidth=2,fg='#eb4d4b')
    l1.grid(row=0,column=0,padx=20)
    l2.grid(row=0,column=1,padx=20)
    l3.grid(row=0,column=2,padx=20)
    l4.grid(row=0,column=3,padx=20)
    l5.grid(row=0,column=4,padx=20)
    l6.grid(row=0,column=5,padx=20)
    l7.grid(row=0,column=6,padx=20)
    btn_ext.grid(row=index+2,columnspan=7,ipadx=540)

如果没有列表框,还有其他替代方法吗?做桌子?在此先感谢:)

答案

您可以使用ttk.Treeview显示数据库中的数据:

import tkinter as tk
from tkinter import ttk
import mysql.connector as mysql

def logs():
    log = tk.Toplevel(root)
    log.transient(root)
    log.title('View all customers')

    # setup treeview
    columns = ('ID', 'S_ID', 'S_NAME', 'B_NAME', 'Date_Taken', 'Date_Returned', 'Status')
    tree = ttk.Treeview(log, height=20, columns=columns, show='headings')
    tree.grid(row=0, column=0, sticky='news')

    # setup columns attributes
    for col in columns:
        tree.heading(col, text=col)
        tree.column(col, width=100, anchor=tk.CENTER)

    # fetch data
    con = mysql.connect(host='localhost', user='root', password='******', database='BOOK')
    c = con.cursor()
    c.execute('SELECT * FROM library')

    # populate data to treeview
    for rec in c:
        tree.insert('', 'end', value=rec)

    # scrollbar
    sb = tk.Scrollbar(log, orient=tk.VERTICAL, command=tree.yview)
    sb.grid(row=0, column=1, sticky='ns')
    tree.config(yscrollcommand=sb.set)

    btn = tk.Button(log, text='Exit', command=log.destroy, width=20, bd=2, fg='#eb4d4b')
    btn.grid(row=1, column=0, columnspan=2)

以上是关于列表框在tkinter中显示数据库中的表的主要内容,如果未能解决你的问题,请参考以下文章

extjs 组合框在单击时显示空白列表

使用 Tkinter 显示带有列的列表框?

JS <select> 列表框在单击/更改时不起作用

Windows 窗体列表框在同一个框中的多个列表

在tkinter的treeview中的for循环中的每个父节点下添加子节点

无法在 TKinter 中显示数据库中的数据