如何在 PySimpleGUI 中水平而不是垂直添加元素?

How do I add elements horizontally instead of vertically in PySimpleGUI?

我试图让我的 GUI 有 2 个“部分”(一左一右),当然,向布局添加元素只是垂直扩展它,所以我尝试做一个“left_part”布局和“right_part”布局,然后将它们与水平分隔符填充合并,但它给了我一些完全不同的东西。

理想情况下,我想要这样的东西(也许中间也有一条细线):

我得到的是:

这是代码:

import PySimpleGUI as sg

left_part = [

    [sg.Text("Pick your favorite fruit")],
    [sg.Input(size=(25, 1), key="path")],
    [sg.FileBrowse(key="fav"), sg.Button("Submit")],
    [sg.Image(key="img1")],

    [sg.Text("Pick your favorite number")],
    [sg.Input(key="num", size=(10,10))],
    [sg.Button("Submit")],

]

right_part = [
    [sg.Text("Pick your favorite animal")],
    [sg.Input(key="animal")],
    [sg.Button("Show image of animal")],
    [sg.Image(key="img2")]
]

layout = [
    [left_part],
    [sg.HSeparator(pad=(500,0))],
    [right_part],
]

window = sg.Window("Favorites", layout)

while True:
    event, values = window.read()
    if event == "Exit" or event == sg.WIN_CLOSED:
        break

以下格式的布局 leftseparatorright 垂直或行。

layout = [
    [element1],
    [sg.HSeparator(pad=(500,0))],
    [element2],
]

应该是这样

layout = [
    [element1, sg.HSeparator(pad=(500,0)), element2],
]

由于element1 和element2 是另一个复杂的布局,所以使用Frame 或Column 元素。

对于水平布局,此处将使用 VSeparator 而不是 HSeparator

对于列中垂直对齐顶部的元素,因此添加了选项 vertical_alignment='top'

所以你代码中的layout可能是这样的,

layout = [
    [sg.Column(left_part, vertical_alignment='top'), sg.VSeparator(), sg.Column(right_part, vertical_alignment='top')],
]