如何在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
相关产品推荐
相关产品推荐

