簡體   English   中英

如何在 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

對於 Column 垂直對齊頂部的元素,因此添加了選項vertical_alignment='top'

所以你代碼中的layout可能是這樣的,

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

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM