如何在PySimpleGUI中同时将多个窗口设置为全屏显示
解决方法
你代码中Maximize()不生效的核心原因是调用时机不对:你仅在捕获到窗口的交互事件时才执行最大化逻辑,新创建的窗口还没触发任何事件,自然不会进入最大化状态。
具体修改方案
你可以在每个窗口创建完成、finalize执行之后直接调用Maximize(),就能保证窗口渲染后直接全屏显示,修改后的完整代码如下:
import PySimpleGUI as sg def make_window1(): layout = [[sg.Text('Window 1')], [sg.Button('Next >'), sg.Button('Exit')]] # 窗口创建完成后立即最大化 window = sg.Window('Window 1', layout, finalize=True) window.Maximize() return window def make_window2(): layout = [[sg.Text('Window 2')], [sg.Button('< Prev'), sg.Button('Exit')]] # 窗口创建完成后立即最大化 window = sg.Window('Window 2', layout, finalize=True) window.Maximize() return window window1, window2 = make_window1(), None while True: window, event, values = sg.read_all_windows() if event in (sg.WIN_CLOSED, 'Exit'): window.close() if window == window2: window2 = None # 关闭窗口2后恢复显示窗口1(可根据需求调整) window1.un_hide() else: break if window == window1 and event == 'Next >': window1.hide() window2 = make_window2() if window == window2 and event == '< Prev': window2.close() window2 = None window1.un_hide() # 释放所有窗口资源 if window1: window1.close() if window2: window2.close()
关键调整说明
- 移除了创建窗口时冗余的重复
.Finalize()调用,构造函数传入finalize=True已经完成了对应操作 - 每个窗口创建完成后立即调用
Maximize(),保证渲染完成就进入最大化状态 - 优化了窗口切换和关闭的逻辑,避免资源泄漏,你也可以根据自己的业务需求调整窗口切换的交互逻辑
内容的提问来源于stack exchange,提问作者Iván Mauricio Paz
相关产品推荐
相关产品推荐

