You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让tabulate包在PySimpleGUI中正常显示?输出对齐异常

解决PySimpleGUI中tabulate文本表格对齐问题

问题核心:tabulate生成的文本表格依赖等宽字体才能保证列对齐,但PySimpleGUI默认的Text/Multiline元素用的是比例字体,导致显示混乱。复制到其他地方正常是因为目标环境用了等宽字体。

解决方案

把Text元素替换为Multiline元素,并指定等宽字体,同时禁用编辑功能:

修改后的完整代码

import PySimpleGUI as sg
from tabulate import tabulate

def txt_out(txt):
    window["-txtUt-"].update(txt)

def se_bevegelser():
    headings = ["Innskudd/uttak", "Beløp i kr"]
    data = [["Innskudd", 4000], ["Uttak", 3000], ["Innskudd", 10000]]
        
    my_table = tabulate(data, headings)
    txt_out(my_table)
    print(my_table)

# 设置全局默认字体为等宽字体,也可单独给Multiline设置
sg.set_options(font=("Consolas", 12))  # Windows用Consolas,macOS用Monaco,Linux用DejaVu Sans Mono

layout = [[sg.Button("Se siste bevegelser", key='-btnSeBevegelser-')],
          # 替换Text为Multiline,禁用编辑并设置合适大小
          [sg.Multiline("", size=(40,5), key="-txtUt-", disabled=True, autoscroll=False)],
          [sg.Button("Avslutt")]
          ]

window = sg.Window("Min Minibank", layout)

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, "Avslutt"):
        break
    elif event == "-btnSeBevegelser-":
        se_bevegelser()
    
window.close()

关键说明

  • 等宽字体选择:Windows系统优先用Consolas,macOS用Monaco,Linux用DejaVu Sans Mono或Ubuntu Mono,这些都是系统自带的等宽字体
  • Multiline的disabled=True确保用户无法编辑内容,仅作为显示容器
  • 如果不想全局修改字体,可单独给Multiline元素指定font参数,比如sg.Multiline(..., font=("Consolas", 12))

内容的提问来源于stack exchange,提问作者joearmstrong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:15:53