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

Fai*_*ein 1 python layout user-interface separator 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
Run Code Online (Sandbox Code Playgroud)

Jas*_*ang 5

布局形式如下leftseparator可以right是垂直的,也可以是行的。

layout = [
    [element1],
    [sg.HSeparator(pad=(500,0))],
    [element2],
]
Run Code Online (Sandbox Code Playgroud)

应该是这样的

layout = [
    [element1, sg.HSeparator(pad=(500,0)), element2],
]
Run Code Online (Sandbox Code Playgroud)

由于 element1 和 element2 用于另一个复杂布局,因此请使用 Frame 或 Column 元素。

对于水平布局,此处将使用HSeparator,代替 。VSeparator

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

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

layout = [
    [sg.Column(left_part, vertical_alignment='top'), sg.VSeparator(), sg.Column(right_part, vertical_alignment='top')],
]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述