如何在 PySimpleGui 中设置两个可互换可见的容器?
How to set two interchangeably visible containers in PySimpleGui?
我将有启用事件的单选按钮。根据选定的值,我希望元素的容器之一可见,而另一个不可见。我也知道所有元素都有一个可见的属性,我只想对一组元素执行此操作,而不仅仅是一个。
我知道列元素,但是我的两个容器应该处于同一水平位置。
容器中包含哪些元素的示例:
[sg.InputText(size=(50, 1), key='-FILENAME-'), sg.FileBrowse()],
[sg.Button("Train", key="-train-")],
[sg.ProgressBar(1, orientation='h', size=(20, 20), key='progress')],
[sg.Canvas(key='-CANVAS-', size=(200, 200))],
[sg.InputText(size=(50, 1), default_text="0.5", key='anomaly_threshold'),sg.Button("Decide Threshold",key="-anomaly_threshold-")],
使用 sg.Column
作为两个容器并将它们放在布局中的同一行。在 True 和 False 之间切换列的选项 visible
。
示例代码,
import PySimpleGUI as sg
radio_tag = ["Next", "PREV"]
sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 11))
cols = [
[[sg.Text("Next element is sg.Input", size=(28, 1)), sg.Input()]],
[[sg.Input(), sg.Text("Previous element is sg.Input", size=(28, 1))]],
]
layout =[
[sg.Radio(text, "position", default=(i==0), enable_events=True, key=text)
for i, text in enumerate(radio_tag)],
[sg.Column(cols[i], visible=(i==0), key=f'COL {i}') for i in range(2)],
]
window = sg.Window("Title", layout, finalize=True)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event in radio_tag:
for i in range(2):
window[f'COL {i}'].update(visible=values[radio_tag[i]])
window.close()
我将有启用事件的单选按钮。根据选定的值,我希望元素的容器之一可见,而另一个不可见。我也知道所有元素都有一个可见的属性,我只想对一组元素执行此操作,而不仅仅是一个。
我知道列元素,但是我的两个容器应该处于同一水平位置。
容器中包含哪些元素的示例:
[sg.InputText(size=(50, 1), key='-FILENAME-'), sg.FileBrowse()],
[sg.Button("Train", key="-train-")],
[sg.ProgressBar(1, orientation='h', size=(20, 20), key='progress')],
[sg.Canvas(key='-CANVAS-', size=(200, 200))],
[sg.InputText(size=(50, 1), default_text="0.5", key='anomaly_threshold'),sg.Button("Decide Threshold",key="-anomaly_threshold-")],
使用 sg.Column
作为两个容器并将它们放在布局中的同一行。在 True 和 False 之间切换列的选项 visible
。
示例代码,
import PySimpleGUI as sg
radio_tag = ["Next", "PREV"]
sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 11))
cols = [
[[sg.Text("Next element is sg.Input", size=(28, 1)), sg.Input()]],
[[sg.Input(), sg.Text("Previous element is sg.Input", size=(28, 1))]],
]
layout =[
[sg.Radio(text, "position", default=(i==0), enable_events=True, key=text)
for i, text in enumerate(radio_tag)],
[sg.Column(cols[i], visible=(i==0), key=f'COL {i}') for i in range(2)],
]
window = sg.Window("Title", layout, finalize=True)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event in radio_tag:
for i in range(2):
window[f'COL {i}'].update(visible=values[radio_tag[i]])
window.close()