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

如何在PySimpleGUI的Frame框架中实现按钮右对齐

解决方案

你可以通过以下两种方案实现Frame内按钮的右对齐,完全不需要手动添加空白Text元素:

方案1:使用sg.Push()(推荐,适配PySimpleGUI 4.33.0及以上版本)

sg.Push()是PySimpleGUI官方提供的弹性占位控件,会自动填充所在行的所有剩余空白空间,直接将后续元素推到行最右侧,无需手动计算尺寸,自适应布局大小。
只需把你代码中注释的空白Text行替换为sg.Push()即可,修改后的完整代码如下:

import sys
import PySimpleGUI as sg

sg.theme("Light Blue 2")
layout = [
    [
        sg.Text("Target folder", size=(9, 1)),
        sg.InputText(default_text="Choose a folder...", size=(59, 1)),
        sg.FolderBrowse(),
    ],
    [
        sg.Frame(
            layout=[
                [
                    sg.Text("First parameter", size=(15, 1)),
                    sg.InputText(default_text="2", size=(3, 1),),
                ],
                [
                    sg.Text("Second parameter", size=(15, 1)),
                    sg.InputText(default_text="8", size=(3, 1),),
                    sg.Push(), # 替换原来的空白Text
                    sg.Submit("A nice button", size=(23, 1)),
                ],
                [sg.ProgressBar(1, orientation="h", size=(50, 20))],
            ],
            title="Cool subpanel",
            relief=sg.RELIEF_GROOVE,
        )
    ],
]
window = sg.Window("Test window", layout)

while True:
    event, values = window.read()
    if event == "Cancel" or event is None:
        sys.exit()

方案2:使用sg.Column适配旧版本

如果你的PySimpleGUI版本较低不支持sg.Push(),可以将需要右对齐的按钮放在sg.Column容器中,通过设置Column的对齐属性实现右对齐,只需要修改按钮所在行的代码即可:

[
    sg.Text("Second parameter", size=(15, 1)),
    sg.InputText(default_text="8", size=(3, 1),),
    sg.Column([[sg.Submit("A nice button", size=(23, 1))]], justification='right', expand_x=True, pad=(0,0))
],

两种方案都可以实现按钮紧贴Frame右侧对齐,且适配不同窗口缩放场景,不会出现手动加空白Text导致的对齐误差问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:36:04