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

如何设置pyglet.text.layout.TextLayout绘制标签的显示位置?

解决pyglet TextLayout文本位于窗口底部的位置调整问题

pyglet的默认坐标系统以窗口左下角为原点(0,0),TextLayout默认y值为0,所以文本会显示在窗口最底部。你可以通过以下两种方式调整它的位置:

方法1:初始化时直接指定位置参数

创建TextLayout对象时,通过x和y参数设置初始位置,搭配对齐属性还能更方便地控制排版:

import pyglet

window = pyglet.window.Window(width=400, height=300)
# 初始化时设置文本到窗口水平居中、垂直居中位置
label = pyglet.text.layout.TextLayout(
    'Hello, {bold True}world{bold False}',
    x=window.width//2,
    y=window.height//2,
    anchor_x='center',
    anchor_y='center'
)

@window.event
def on_draw():
    window.clear()
    label.draw()

pyglet.app.run()

方法2:创建后修改x/y属性

如果已经生成了TextLayout对象,直接修改它的x和y属性即可调整位置:

# 假设已创建label和window对象
# 示例:将文本移到窗口顶部下方20像素处,同时水平居中
label.y = window.height - label.content_height - 20
label.x = (window.width - label.content_width) // 2
label.anchor_x = 'center'

关键细节

  • anchor_x/anchor_y用于设置文本的对齐基准,比如anchor_y='center'会让文本的垂直中心对齐到设置的y坐标,不用手动计算文本自身高度的偏移。
  • content_width和content_height是TextLayout的内置属性,代表文本实际占据的宽高,用它们计算位置能适配不同内容和窗口尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:06