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

如何获取Pygame窗口标题栏宽度并居中标题文本

解决Pygame窗口标题栏宽度获取与标题文本居中问题

核心问题说明

Pygame本身没有直接提供获取标题栏尺寸的API,因为标题栏属于操作系统的窗口组件,由系统窗口管理器控制,而非Pygame直接管理。另外,手动通过空格填充让标题居中的方法不可靠,会因系统、字体、窗口尺寸差异导致适配问题。

获取标题栏宽度/高度的方法

需要借助平台相关的系统API来实现,以下是不同平台的具体方案:

Windows平台(使用pywin32)

  1. 先安装依赖库:
pip install pywin32
  1. 示例代码:
import pygame
import win32gui
import win32api

pygame.init()
# 创建窗口
disp = pygame.display.set_mode((640, 480))
disp.fill((0, 0, 0))
pygame.display.flip()
title = 'text'
pygame.display.set_caption(title)

# 获取Pygame窗口的系统句柄
hwnd = pygame.display.get_wm_info()['window']
# 获取窗口客户区(内容区域)和整个窗口的矩形坐标
client_rect = win32gui.GetClientRect(hwnd)
window_rect = win32gui.GetWindowRect(hwnd)

# 计算标题栏高度和左右边框宽度
title_bar_height = window_rect[3] - window_rect[1] - client_rect[3]
border_width = (window_rect[2] - window_rect[0] - client_rect[2]) // 2

print(f"标题栏高度: {title_bar_height}px, 边框宽度: {border_width}px")

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

Linux平台(使用python-xlib)

  1. 安装依赖库:
pip install python-xlib
  1. 核心思路:通过Xlib获取窗口的整体尺寸与客户区尺寸,计算差值得到标题栏和边框尺寸,逻辑与Windows平台类似,需调用Xlib对应的窗口属性接口。

macOS平台(使用pyobjc)

  1. 安装依赖库:
pip install pyobjc-framework-Cocoa
  1. 核心思路:通过Cocoa API获取窗口的框架矩形和内容视图矩形,计算差值得到标题栏高度。

标题文本居中的正确方式

手动添加空格的适配性极差,正确做法是依赖系统窗口管理器的默认行为:

  • 绝大多数操作系统(Windows、macOS、主流Linux桌面环境)的窗口标题默认是居中显示的,如果你的系统显示居左,可能是系统窗口设置的问题,可在系统的窗口管理器设置中调整标题对齐方式。
  • 若需通过代码强制设置,需调用系统API修改窗口的标题栏样式,但这涉及复杂的平台特定逻辑,不推荐普通场景使用。

内容的提问来源于stack exchange,提问作者contelo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:06:30