gpt4 book ai didi

python - 如何在 PySimple GUI 中根据按钮点击显示不同的布局? (持续窗口循环)

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:35 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以根据 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

最佳答案

其实你们已经很接近了。

这就是我认为您正在寻找的内容。您需要做的是将布局添加到 Column 元素。然后将除您希望可见的一列之外的所有列设为不可见。

这是个好主意。

import PySimpleGUI as sg

# ----------- Create the 3 layouts this Window will display -----------
layout1 = [[sg.Text('This is layout 1 - It is all Checkboxes')],
*[[sg.CB(f'Checkbox {i}')] for i in range(5)]]

layout2 = [[sg.Text('This is layout 2')],
[sg.Input(key='-IN-')],
[sg.Input(key='-IN2-')]]

layout3 = [[sg.Text('This is layout 3 - It is all Radio Buttons')],
*[[sg.R(f'Radio {i}', 1)] for i in range(8)]]

# ----------- Create actual layout using Columns and a row of Buttons
layout = [[sg.Column(layout1, key='-COL1-'), sg.Column(layout2, visible=False, key='-COL2-'), sg.Column(layout3, visible=False, key='-COL3-')],
[sg.Button('Cycle Layout'), sg.Button('1'), sg.Button('2'), sg.Button('3'), sg.Button('Exit')]]

window = sg.Window('Swapping the contents of a window', layout)

layout = 1 # The currently visible layout
while True:
event, values = window.read()
print(event, values)
if event in (None, 'Exit'):
break
if event == 'Cycle Layout':
window[f'-COL{layout}-'].update(visible=False)
layout = layout + 1 if layout < 3 else 1
window[f'-COL{layout}-'].update(visible=True)
elif event in '123':
window[f'-COL{layout}-'].update(visible=False)
layout = int(event)
window[f'-COL{layout}-'].update(visible=True)
window.close()

[编辑]PySimpleGUI GitHub 中添加了一个名为“Demo_Column_Elem_Swap_Entire_Window.py”的新演示程序。您可以通过访问 Trinket 查看代码并在浏览器中运行它。 .

关于python - 如何在 PySimple GUI 中根据按钮点击显示不同的布局? (持续窗口循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59500558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com