Я создал таблицу PySimpeGUI, используя следующий код:
import pandas as pd
import PySimpleGUI as sg
df = pd.read_csv('C:/Data/dummydata.csv')
data = df.values.tolist()
headings = df.columns.tolist()
def main():
layout = [sg.Table(values=data, headings=headings, auto_size_columns=True,
display_row_numbers=False, num_rows = len(data), enable_events=True,
justification='left', key='_TABLE_', vertical_scroll_only = False)],
window = sg.Window('Dummy Name', auto_size_text=True, auto_size_buttons=True,
grab_anywhere=False, resizable=True,
layout=layout, finalize=True)
while True:
event, values = window.read()
if event == "Exit" or event == sg.WIN_CLOSED:
break
window.close()
if __name__ == "__main__":
main()
Я получаю следующую таблицу:
Как вы можете видеть, длина заголовков столбцов увеличивает ширину некоторых столбцов, хотя соответствующие данные не требуют, чтобы столбцы были широкими. Может ли кто-нибудь сказать мне, как обернуть текст в заголовках столбцов в PySimpleGUI, чтобы я мог уменьшить размер этих столбцов? Я попытался отключить auto_size_columns, но тогда заголовки столбцов просто обрезались.






Здесь особое требование, поэтому код tkinter для него.
Пример кода
import PySimpleGUI as sg
headings = ['A1', 'B1\nB2', 'C1\nC2\nC3']
data = [[1,2,3], [2,4,6], [3,6,9]]
layout = [
[sg.Table(values=data, headings=headings, num_rows=10, col_widths=[4, 4, 4],
cols_justification='ccc', auto_size_columns=False, key='-TABLE-')],
]
location = sg.Window.get_screen_size()
window = sg.Window('Title', layout, finalize=True, location=location)
# Set 3-line heading height
table = window['-TABLE-']
table.widget.heading('#0', text='\n\n') # 3 lines
# Update the GUI for the Table
style_name = table.table_ttk_style_name + '.Heading'
style = table.ttk_style
foreground = style.configure(style_name)['foreground']
style.configure(style_name, foreground=foreground)
# Relocate window to center of the screen
window.refresh()
window.move_to_center()
window.read(close=True)
Обновлен для получения дополнительных комментариев в коде.
Благодарю за ваш ответ. Если я правильно понимаю, то, по сути, вы разбиваете столбцы вручную, используя \n, а затем используете Tkinter для чтения \n в виде разделения текста, а затем вручную устанавливаете высоту в 3 столбца? Плюс некоторый код, чтобы получить размер экрана и центрировать его, что я хотел сделать, но также еще не совсем был уверен в этом. Мне может потребоваться немного времени, чтобы понять, как реализовать это в моем коде, но я думаю, что это решает мой вопрос, поэтому я отмечу это как ответ.