Python Tinker Sqlite3 Получить данные и показать на Tkinter GUI - PullRequest
0 голосов
/ 03 августа 2020

У меня есть database с различными компонентами инструмента. У меня также есть страница с полями, которые я хотел бы заполнить данными из database. Я просмотрел множество документов для Tkinter и Sqlite3 и не могу понять, как это сделать. Кажется, это было бы просто сделать, но ничего из того, что я пробовал, не помогло. Код для окна, которое я хочу заполнить, приведен ниже. Может ли кто-нибудь показать мне пример того, как я могу получить спецификацию c table data из database для заполнения этих полей? Заранее спасибо.

Вот мой код:

    from tkinter import *
    import sqlite3
     
    
    data = Tk()
    data.title("WellSav | Data")
    data.geometry("1400x800")
    
    
    conn = sqlite3.connect('well_sav.db')
    c = conn.cursor()
    
    
    # Tools Frame Insert Data Into Fields
    
    tools_frame = LabelFrame(data, text="Tools Data", padx=5, pady=5)
    tools_frame.grid(row=0, column=0, padx=10, pady=10)
    
    tools_type_label = Label(tools_frame, text="Tool Type")
    tools_type_label.grid(row=0, column=0,)
    tools_type_entry = Entry(tools_frame)
    tools_type_entry.grid(row=0, column=1)
    
    tools_length_label = Label(tools_frame, text="Tool Length")
    tools_length_label.grid(row=1, column=0)
    tools_length_entry = Entry(tools_frame)
    tools_length_entry.grid(row=1, column=1)
    
    tools_inside_diameter_label = Label(tools_frame, text="Tool ID")
    tools_inside_diameter_label.grid(row=2, column=0)
    tools_inside_diameter_entry = Entry(tools_frame)
    tools_inside_diameter_entry.grid(row=2, column=1)
    
    
    tools_outside_diameter_label = Label(tools_frame, text="Tool OD")
    tools_outside_diameter_label.grid(row=3, column=0)
    tools_inside_diameter_entry = Entry(tools_frame)
    tools_inside_diameter_entry.grid(row=3, column=1)
   
    
    data.mainloop()

1 Ответ

0 голосов
/ 04 августа 2020

A ttk.Treeview без части дерева можно использовать для отображения таблицы:

tree = ttk.Treeview(master, columns=('Position', 'Name', 'Score'), show='headings')

Затем установите метки столбцов с помощью

tree.heading(<column>, text="Label")

и добавьте строки с помощью

tree.insert("", "end", values=(<position>, <name>, <score>))

Первый аргумент - это родительский элемент, поскольку вам нужна таблица, все элементы имеют одного и того же родителя, root "". Второй аргумент - это позиция нового элемента в дереве.

Полный пример:


import tkinter as tk
from tkinter import ttk
import sqlite3

def show():
    cr=sqlite3.connect('database_name')
    c.cursor()
    c.execute("select * from table_name")

    tempList = c.fetchall()
    tempList.sort(key=lambda e: e[1], reverse=True)

    for i, (name, score) in enumerate(tempList, start=1):
        listBox.insert("", "end", values=(i, name, score))

scores = tk.Tk() 
label = tk.Label(scores, text="High Scores", font=("Arial",30)).grid(row=0, columnspan=3)
# create Treeview with 3 columns
cols = ('Position', 'Name', 'Score')
listBox = ttk.Treeview(scores, columns=cols, show='headings')
# set column headings
for col in cols:
    listBox.heading(col, text=col)    
listBox.grid(row=1, column=0, columnspan=2)

showScores = tk.Button(scores, text="Show scores", width=15, command=show).grid(row=4, column=0)
closeButton = tk.Button(scores, text="Close", width=15, command=exit).grid(row=4, column=1)

scores.mainloop()

screenshot

You can find more details about the Treeview widget здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...