如何设置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
相关产品推荐
相关产品推荐

