简体   繁体   English

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

[英]listbox displaying tables from database in tkinter

Is there a way to display data taken from my database in terms of table and that i can actually copy the individual contents of?有没有办法以表格的形式显示从我的数据库中获取的数据,并且我实际上可以复制其中的各个内容? using listbox and scrollbar currently i defined a function logs and gave looped thru it like this:目前使用列表框和滚动条我定义了一个 function 日志并通过它循环如下:

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)

is there any alternatives to this if not listbox?如果不是列表框,还有其他选择吗? to make tables?做表? Thanks in advance:)提前致谢:)

You can use ttk.Treeview to show data from database:您可以使用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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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