如何在Pygame中实现窗口近乎最大化效果?
在Pygame中实现非全屏的窗口最大化效果
要实现保留窗口边框、仅占据系统可用工作区(排除任务栏等系统UI区域)的“近乎最大化”窗口,可通过以下步骤完成:
方法1:跨平台通用方案(借助tkinter获取工作区尺寸)
tkinter是Python标准库,可跨Windows、macOS、Linux获取系统工作区的准确尺寸,适合需要跨平台兼容的场景:
import pygame import tkinter as tk # 初始化Pygame pygame.init() # 用tkinter获取系统工作区大小(排除任务栏) root = tk.Tk() workspace_width = root.winfo_screenwidth() workspace_height = root.winfo_screenheight() root.destroy() # 创建近乎最大化的窗口(保留边框、支持调整大小) screen = pygame.display.set_mode((workspace_width, workspace_height), pygame.RESIZABLE) pygame.display.set_caption("近乎最大化窗口") # 主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((240, 240, 240)) pygame.display.flip() pygame.quit()
方法2:Windows平台专属方案(借助系统API)
如果仅针对Windows平台,可直接调用Windows系统API获取工作区尺寸,无需依赖tkinter:
import pygame import ctypes # 初始化Pygame pygame.init() # 调用Windows API获取工作区尺寸(排除任务栏) user32 = ctypes.windll.user32 SM_CXWORKAREA = 0x30 SM_CYWORKAREA = 0x31 workspace_width = user32.GetSystemMetrics(SM_CXWORKAREA) workspace_height = user32.GetSystemMetrics(SM_CYWORKAREA) # 创建窗口 screen = pygame.display.set_mode((workspace_width, workspace_height), pygame.RESIZABLE) pygame.display.set_caption("Windows专属近乎最大化窗口") # 主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((240, 240, 240)) pygame.display.flip() pygame.quit()
关键说明
- 不要使用
pygame.FULLSCREEN参数,这会让窗口进入无边框的全屏模式,不符合需求。 pygame.RESIZABLE参数保留了窗口的调整功能,用户可手动拖动边框改变窗口大小。- 两种方法获取的尺寸都会自动排除系统任务栏、菜单栏等占用的区域,实现和你需求一致的“近乎最大化”效果。
内容的提问来源于stack exchange,提问作者Wolf
相关产品推荐
相关产品推荐

