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)
布局形式如下left,separator可以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)