如何在 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
以下格式的布局 left
、separator
和 right
垂直或行。
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')],
]
我试图让我的 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
以下格式的布局 left
、separator
和 right
垂直或行。
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')],
]