我想做一个非常漂亮的程序,程序看起来已经很不错了,但是唯一让我烦恼的是,窗口标题(窗口标题)没有居中。 有谁知道我怎样才能实现这一目标?
我知道你可以绘制自定义的任何东西,但我也了解到这非常复杂,并且提到的这种方式不再适用于 Windows 10。
我真的需要帮助,因为该程序非常好,看起来也已经非常好,但我只需要做这件小事。
我试图将标题居中,并期望它会很容易,但它非常困难。不像我程序中带有自定义语音的语音转语音系统那么难,但仍然非常难。
我同意furas的评论,这很大程度上取决于你的桌面窗口管理器,使用无边框窗口并绘制你自己的标题将为你带来你想要的美感。
如果您想要居中文本,您可以随时使用 内置 str.center() 函数来填充字符串。但是 width 参数是字符长度,因此您需要根据窗口宽度将其转换为像素。您的窗口管理器可能不会显示前导或尾随空格,因此您可能需要用可打印字符将居中字符串添加到书尾。
这是一个最小的例子:
import pygame
def set_centred_title(window, title):
title_width = window.get_width()
title_columns = round(title_width / 13.4) # Magic Number!
fill_character = chr(0x2001) # Unicode EM QUAD
# add non-space characters at each end to prevent whitespace strip.
padded_title = f"-{title:{fill_character}^{title_columns}}-"
pygame.display.set_caption(padded_title)
pygame.init()
WIDTH, HEIGHT = 900, 500
initial_title = "Centred Title"
window = pygame.display.set_mode((WIDTH, HEIGHT), pygame.RESIZABLE)
clock = pygame.time.Clock()
set_centred_title(window, initial_title)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.VIDEORESIZE: # size, w, h
set_centred_title(window, "Resized Centred Title")
window.fill("black")
pygame.display.update()
clock.tick(30)
pygame.quit()
对我来说这看起来不错:
但是,在具有不同设置的不同电脑上它可能会被破坏。