Как улучшить результаты в PySimpleGUI

Я сейчас практикую панд

Я использую некоторые данные о покемонах в качестве практики https://gist.github.com/armgilles/194bc8b35001e а>

Я хочу создать программу, которая позволяет пользователю вводить свои запросы, и я верну результат, который им нужен.

У меня небольшая проблема, когда, если я показываю результаты моего запроса pandas в pysimplegui, он показывает «уродливый» результат, в отличие от терминала, который является «красивым». Чтобы прояснить мою проблему, вот пример.

Если я запрошу это:

pic1

результат после того, как я нажму поиск, будет

pic2

но если я посмотрю на результаты в терминале, это будет выглядеть так

pic3

вот мой рабочий код


import pandas as pd
import PySimpleGUI as sg

pd.set_option('display.max_rows', None)
df = pd.read_csv(r'PATH HERE')

layout = [  [sg.Text('This is a basic searcher \nPlease input your search parameters')],
            [sg.Text('Name'), sg.Input(key='Name')],
            [sg.Text('Type 1'), sg.Input(key='Type 1')],
            [sg.Text('Type 2'), sg.Input(key='Type 2')],
            [sg.Text('Total'), sg.Input(key='Total')],
            [sg.Text('Generation'), sg.Input(key='Generation')],
            [sg.Button('Search'), sg.Button('Close')]
]


window = sg.Window('Pokemon Database Query', layout).Finalize()


while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Close':
        break
    if event == 'Search':
        df_query = 'df.loc['
        for key,value in values.items():
            if value != '':
                if value.isnumeric():
                    df_query += f'''(df['{key}'] == {value})&'''
                else:
                    df_query += f'''(df['{key}'] == '{value}')&'''
        df_query = df_query[:-1] + ']'
        sg.popup_scrolled('Result', eval(df_query))
window.close()

Спасибо


person kalimdor18    schedule 31.08.2020    source источник
comment
Вам нужно использовать шрифт фиксированной ширины, чтобы текст располагался в столбцах. Попробуйте установить font = 'courier 10'.   -  person Mike from PSG    schedule 01.09.2020


Ответы (1)


Уродливость упаковки можно улучшить, указав размер возвращаемого окна. size = (столбцы, строки) `

sg.popup_scrolled('Result', eval(df_query), size=(100,40))
person r-beginners    schedule 31.08.2020
comment
я уже пытался это сделать, но это все равно уродливо ... я установил его на size = (1280, 720), который в основном представляет собой весь мой экран ... и это то, как он выглядел ibb.co/sbgQBFw - person kalimdor18; 31.08.2020
comment
Почему бы не попробовать это вместо этого? Table () `вместо sg.popup_scrolled(). Вот пример, даже если он официальный. - person r-beginners; 01.09.2020