【问题标题】:Making a table with PySimpleGUI and Pandas使用 PySimpleGUI 和 Pandas 制作表格
【发布时间】:2021-03-04 17:16:38
【问题描述】:

我是 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()

【问题讨论】:

    标签: pandas pysimplegui


    【解决方案1】:

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

    这里,没有数据记录,为避免错误,必须设置选项auto_size_columns=Falsesg.Table每列的宽度。

    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。你能解释一下你是如何给它赋值的吗?
    • col_widths 设置每列的宽度。在这里,我通过 lambda 函数测量了每个标题的长度以获得额外的 1 个长度。如果不需要额外的 1 长度,只需 len 并且没有 lambda。 map 函数会将此函数应用于列表的每个元素。
    • 我们可以说标题是该函数的域,x 是变量,len(x + 1) 是映射规则,list() 函数就像获取该函数的范围一样列表。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2022-11-01
    • 2018-06-06
    • 1970-01-01
    • 2021-12-27
    • 2021-02-24
    • 2022-01-19
    • 2023-01-31
    相关资源
    最近更新 更多