首页 > 解决方案 > sg.Output 中未对齐的 Excel 表的问题

问题描述

如何使用 sg.Output 将某些 excel 列(以前从文件 (pd.read_excel) 导入)的输出正确格式化为输出?

导入文件:

df = pd.read_excel('C:/file.xlsx', usecols="A,B,C")

sg.output 中的输出:

layout = [[sg.Text('Error Log', size=(43, 1), justification='center', text_color='#00226F',

         font=("Helvetica", 19), relief=sg.RELIEF_RIDGE)],

   [sg.Column(colum1), sg.Column(colum2)] ,

[sg.Frame('Error Code: [ XXXX ] ', 

    [[sg.Input(size=(31, 1),  enable_events=True)],

    [sg.Button('Display Error Code'),sg.Button("Sensor and Actuator Layout")],

[sg.Output(size=(81, 12), key='-OUTPUT-')]], title_color='#00226F')],[sg.Button('Submit', visible=False, bind_return_key=True)]]

和印刷:

 print(df[df["CODE :"] == values[0] ].head())

我无法让列正确对齐:

错位的excel表格

提前致谢

标签: pythonexcelpandasformattingpysimplegui

解决方案


这里有两个问题

  • sg.Output显示文本,不提供格式功能。因此,您必须先获得正确的文本样式,然后才能将其打印到sg.Output. 调用to_string(index=False, justify='left')DataFrame 的方法来移除索引并左对齐。
  • 要按字符很好地对齐,您应该使用等宽字体sg.Output,例如font=("Courier New", 11).

示例代码(带索引,格式可能不太好)

import pandas as pd
import PySimpleGUI as sg

data = {
    "CODE :": ['1005'],
    "ERROR :": ['DMA5(Lift Down) malfunction'],
    "ACTION :": ['Replace the motor'],
}

df = pd.DataFrame(data)

layout = [
    [sg.Text("Error Code: [ XXXX ]"),
     sg.Input(size=(31, 1), key='-INPUT-')],
    [sg.Output(size=(81, 12), font=('Courier New', 11), key='-OUTPUT-')],
    [sg.Button('Submit', visible=False, bind_return_key=True)],
]

window = sg.Window("Title", layout, finalize=True)

while True:

    event, values = window.read()

    if event == sg.WINDOW_CLOSED:
        break
    elif event == 'Submit':
        text = df[df["CODE :"] == values['-INPUT-']].head().to_string(index=False, justify='left')
        print(text)

window.close()

推荐阅读