如何在PySimple GUI中基于按钮单击显示不同的布局? (永久窗口循环)

问题描述 投票:0回答:1

我想知道是否有一种方法可以根据PySimple GUI中的按钮单击来管理不同的布局。我刚开始使用此框架,我想找到导航菜单的最佳方法。不必使用不同的布局,但这只是让我感到最直观的方式。

我当时想像是有一个当选择某个子菜单按钮时会被推到顶部的布局列表。

layouts = [layout1, layout2, layout3, layout4]

或者也许用以下命令启动程序:

layout = layout1

并且选择子菜单后,只需将状态更改为:

layout = layout2

例如,具有“主菜单”布局,然后单击按钮,将另一种布局或“子菜单”带到“前部”,以便整个程序在一个窗口中运行。也许看起来像这样:

主菜单

按钮1

按钮2

按钮3

单击按钮1时,窗口保持打开状态,但是显示变为子菜单1。

从PySimpleGui文档中,我正在使用建议用于构造某些程序的持久窗口循环:

import PySimpleGUI as sg

sg.theme('BluePurple')

layout = [[sg.Text('Your typed chars appear here:'), sg.Text(size=(15,1), key='-OUTPUT-')],
      [sg.Input(key='-IN-')],
      [sg.Button('Show'), sg.Button('Exit')]]

window = sg.Window('Pattern 2B', layout)

while True:  # Event Loop
    event, values = window.read()
    print(event, values)
    if event in  (None, 'Exit'):
        break
    if event == 'Show':
        # Update the "output" text element to be the value of "input" element
        window['-OUTPUT-'].update(values['-IN-'])

window.close()

我愿意完全改变结构,但是我想在开始构建功能之前先关闭菜单导航。

  • 使用PySimpleGUI == 4.14.1
python window submenu persistent pysimplegui
1个回答
0
投票

使用Google,我发现没有方法可以用一种布局替换另一种布局。

PySimpleGUI IssuesUpdating form layouts #117

您只能在一种布局中创建所有元素,而其中一些元素会隐藏并再次显示:

Reddit r/PySimpleGUIIs it possible to update the layout of a column / frame?


tkinter中,有一种流行的方法是使用Frame对小部件进行分组,然后隐藏/显示框架以更改窗口中的内容。似乎PySimpleGUI也有Frame,但我没有能按预期工作的示例。

© www.soinside.com 2019 - 2024. All rights reserved.