You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:57:03