使用PySimpleGUI和Pandas制作表格

4

我刚接触PySimpleGUI和pandas。我想在GUI中制作一个表格。如何添加每个标题的条目?我的代码有问题。

import pandas
import PySimpleGUI
headers = {'Integers':[], 'Strings':[], 'Normallized Floats':[], 'Binaries':[]}
table = pandas.DataFrame(headers)
window = PySimpleGUI.Window(title = 'Sample excel file', layout = [[PySimpleGUI.Table(values = table, headings = list(headers))]] , margins = (200,200))
event, value = window.read()
1个回答

4

表格数据是行列表示的列列表。

在这里,如果没有数据记录,为了避免错误,在sg.Table中必须设置选项auto_size_columns=False并为每个列设置宽度。

import pandas
import PySimpleGUI as sg

headers = {'Integers':[], 'Strings':[], 'Normalized Floats':[],
    'Binaries':[]}
table = pandas.DataFrame(headers)

headings = list(headers)
values = table.values.tolist()

sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 16))

layout = [[sg.Table(values = values, headings = headings,
    # Set column widths for empty record of table
    auto_size_columns=False,
    col_widths=list(map(lambda x:len(x)+1, headings)))]]

window = sg.Window('Sample excel file',  layout)
event, value = window.read()

谢谢您的回答。我只是不明白一个问题:col_widths。您能解释一下您是如何给它分配值的吗? - Emad
col_widths设置每列的宽度。在这里,我通过lambda函数测量了每个标题的长度,以获得额外的1长度。如果不需要额外的1长度,只需使用len而不是lambda。map函数将此函数应用于列表的每个元素。 - Jason Yang
我们可以说headings是该函数的域,x是变量,len(x + 1)是映射规则,list()函数就像获取该函数范围的列表。 - Emad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接