【问题标题】:How to set two interchangeably visible containers in PySimpleGui?如何在 PySimpleGui 中设置两个可互换的可见容器?
【发布时间】:2021-09-22 06:20:05
【问题描述】:

我将有启用事件的单选按钮。根据所选值,我希望元素的容器之一可见而另一个不可见。我也知道所有元素都有一个可见的属性,我只想对一组元素执行此操作,而不仅仅是一个。

我知道 column 元素,但是我的两个容器应该位于相同的水平位置。

容器中包含哪些元素的示例:

    [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-")],

【问题讨论】:

    标签: python user-interface pysimplegui


    【解决方案1】:

    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()
    

    【讨论】:

      猜你喜欢
      • 2019-10-29
      • 2011-09-24
      • 2015-12-17
      • 2022-08-22
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多