3

这是我正在编写的一个程序,它应该在窗口中显示一些文本......

import pyglet
from pyglet import window
from pyglet.text.layout import TextLayout

class Window(pyglet.window.Window):
    def __init__(self):
        super(Window, self).__init__(width = 800, height = 600,
                                 caption = "Prototype")

        self.disclaimer = pyglet.text.Label("Hello World",
                                   font_name = 'Times New Roman',
                                   font_size=36,
                                   color = (255, 255, 255, 255),
                                   x = TextLayout.width / 2,
                                   y = TextLayout.height / 2,
                                   anchor_x='center', anchor_y='center')

def on_draw(self):
    self.clear()
    self.disclaimer.draw()

if __name__ == '__main__':
    window = Window()
    pyglet.app.run()

...但是每次我尝试运行它时,我都会收到此错误

line 16
x = TextLayout.width / 2,
TypeError: unsupported operand type(s) for /: 'property' and 'int'

我很确定这意味着我试图分割一个字符串,但在 Pyglet 文档中它说宽度和高度是整数。我不知道我做错了什么。

4

2 回答 2

3

TextLayout是一个——TextLayout.width原始属性也是,对你来说毫无用处;您想width从类的实例中获取TextLayout,而不是从类本身中获取!此外,该类专门用于布置文本文档,所以我真的不明白你为什么想要得到它(因为你周围没有文档对象)。

我怀疑你真正想要的是:

                               x = self.width / 2,
                               y = self.height / 2,

并删除TextLayout.

于 2010-06-27T05:17:09.277 回答
0

如果您使用的是 Python 3.x 版,则除法运算符/会生成浮点类型数。用于//截断(传统风格)整数除法。

于 2010-06-27T05:13:05.077 回答