Лучший способ упаковать информацию из базы данных MySQL в коробку tkinter - PullRequest
0 голосов
/ 02 ноября 2019

Я создал базу данных MySQL с именем пользователя, счетом и датой. Я хочу упаковать 10 строк данных в созданную мной коробку tkinter, однако я не знаю лучшего способа сделать это. Я попытался сделать информацию меткой:

def print_result():
global other_information
other_information = 3
myresult = mycursor.fetchall()
for result in myresult:
    global result_label
    result_label = Label(text=result)
    result_label.pack()
back_radio.pack()

, и, хотя это успешно упаковывает строки данных в поле tkinter, при попытке pack_forget () распаковывается только последняя строка и остальные данныеостается на коробке tkinter. Это мой код для распаковки:

elif other_information == 3:
result_label.pack_forget()
back_radio.pack_forget()
display()

Поэтому я решил попробовать поместить его в текстовый виджет:

def print_result():
    myresult = mycursor.fetchall()
    for result in myresult:
        global result_text
        result_text = Text(game, height=300, width=300)
        result_text.insert('1.0', result)
        result_text.pack()
    back_radio.pack()

Однако это упаковало только одну строку данных, и мои радиокнопкине появитсяКаков наилучший способ отобразить строки данных на коробке tkinter и как мне их распаковать?

Спасибо!

1 Ответ

0 голосов
/ 02 ноября 2019

Если вы хотите отобразить результат запроса в графическом интерфейсе tkinter, вы можете просто использовать Scrolledtext (предпочтительно) или любой другой Text виджет и вставить результат в него. Вы можете формировать табличные данные из полученных результатов запроса, используя простой модуль с именем tabulate. Для справки используйте ниже-

from tabulate import tabulate
import tkinter as tk
from tkinter.scrolledtext import ScrolledText

class Root(tk.Tk):
    fetch_data = [(None, 21, 20, 20, 20, 20), (8, None, 8, 8, 8, 8)]
    fetch_col = ['TEACHER', 'STUDENT', 'A', 'B', 'C', 'D']
    def __init__(self):
        super().__init__()

        h_scrlbar = tk.Scrollbar(self, orient='horizontal')
        h_scrlbar.pack(side='bottom', fill='x')

        self.res_tbl = ScrolledText(self, font=(
            'Consolas', 14), wrap='none', xscrollcommand=h_scrlbar.set)
        self.res_tbl.pack(fill='both', expand=1)
        h_scrlbar.config(command=self.res_tbl.xview)

        pr = tabulate(Root.fetch_data, Root.fetch_col, tablefmt='psql', missingval='-')
        self.res_tbl.insert(0.0, pr)

if __name__ == '__main__':
    Root().mainloop()

Где вместо результата запроса sql можно получить fetch_data & fetch_col.

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