我想知道是否有一种方法可以根据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()
我愿意完全改变结构,但是我想在开始构建功能之前先关闭菜单导航。
使用Google
,我发现没有方法可以用一种布局替换另一种布局。
PySimpleGUI Issues
:Updating form layouts #117,
您只能在一种布局中创建所有元素,而其中一些元素会隐藏并再次显示:
Reddit r/PySimpleGUI
:Is it possible to update the layout of a column / frame?
在tkinter
中,有一种流行的方法是使用Frame
对小部件进行分组,然后隐藏/显示框架以更改窗口中的内容。似乎PySimpleGUI
也有Frame
,但我没有能按预期工作的示例。