PySimpleGui 右对齐框架中的按钮

Mat*_*one 5 python user-interface pysimplegui

我正在构建一个简单的 GUIpysimplegui并希望右对齐框架内的按钮。我找到了有关如何使用文本而不是按钮执行此操作的详细信息。

例如,我希望下面的按钮能够卡入框架的右侧,周围有凹槽。我要这个:

在此输入图像描述

看起来更像这样:

在此输入图像描述

但无需添加手动调整的空白文本元素即可使其接近,因为这通常无法正确排列(请注意sg.Text("", size=(22, 1))下面注释掉的行)。

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.Text("", size=(22, 1)),
                    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()

Run Code Online (Sandbox Code Playgroud)

Mik*_*eyB 2

您的问题只是错过了PySimpleGUI 的发布,这使得此操作变得微不足道。

StackOverflow 的一个问题是——“一切都不会消亡”……包括旧的解决方案。这是一个真正的问题,我还没有找到可靠的解决方案。

该技术于 2021 年 9 月发布版本 4.48.0,并使用当时的新Push元素。顾名思义,意志Push推动元素。通过在元素之间放置一个,它将把元素推开。

这是您的代码,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(),
                    sg.Button("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()


Run Code Online (Sandbox Code Playgroud)

这是结果: 在此输入图像描述

注意(这并不是非常重要)-我已经替换SubmitButton,因为使用Submit可能会令人困惑。 Submit无非是一个返回Button带有 text 的元素的函数"Submit"。它没有做任何特殊的事情,实际上提供的参数可能比Button.