繁体   English   中英

PySimpleGui 更改整个基于布局的菜单单击

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM