[英]PySimpleGui change whole layout based menu clicked
我为我的 python 脚本制作了简单的 GUI,我不想使用 Tabs 或 TabGroups 选项卡 github 示例
我添加了自己的菜单和项目,但没有找到任何根据菜单项点击更改布局的解决方案。 那么是否有任何快速而好的解决方案来更改基于菜单项单击的布局?
menu_def = ['Layout', ['Layout1::LAYOUT1_KEY', 'Layout2::LAYOUT2_KEY', 'Layout3::LAYOUT3_KEY']],['About',['About::ABOUT_KEY']]
这是示例布局和 window 调用。
layout1_layout = [
[sg.Text("Layout 3 text")]
]
layout2_layout = [
[sg.Text("Layout 2 text.")]
]
window = sg.Window("Example form", layout, resizable=True, finalize=True, margins=(250,100)).read()
尝试在同一行中为您的布局 1、布局 2 使用 Column 元素,但只有一个布局带有选项visible=True
,所有其他布局带有选项visible=False
,同时记录现在可见的布局。
当点击菜单中的哪个布局时,将可见的布局设置为不可见,并将点击的布局设置为可见,并记录此布局可见。
import PySimpleGUI as sg
menu_def = [['Layout', ['Layout1', 'Layout2']]]
font = ('Courier New', 11)
sg.set_options(font=font)
layout1 = [[sg.Text("Layout 1 text")]]
layout2 = [[sg.Text("Layout 2 text")]]
layout = [
[sg.Menu(menu_def, key='MENU')],
[sg.Column(layout1, key='COL1'),
sg.Column(layout2, key='COL2', visible=False)],
]
window = sg.Window("Title", layout, finalize=True)
col, col1, col2 = 1, window['COL1'], window['COL2']
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
print(event, values)
if event == 'Layout1' and col != 1:
col = 1
col1.update(visible=True)
col2.update(visible=False)
elif event == 'Layout2' and col != 2:
col = 2
col2.update(visible=True)
col1.update(visible=False)
window.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.