Ошибка типа: неподдерживаемые типы операндов - PullRequest
3 голосов
/ 27 июня 2010

Это программа, которую я пишу, которая должна отображать текст в окне ...

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 говорится, что ширина и высота - это целые числа.Понятия не имею, что я делаю не так.

Ответы [ 2 ]

3 голосов
/ 27 июня 2010

TextLayout - это класс , поэтому TextLayout.width - это необработанное свойство, довольно бесполезное для вас;вы хотите получить width из экземпляра класса TextLayout, а не из самого класса!Более того, класс специально используется для разметки текстовых документов, поэтому я не совсем понимаю, зачем вам вообще его получать (так как у вас нет объекта документа).Вы хотите:

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

и удалить импорт и все упоминания о TextLayout.

0 голосов
/ 27 июня 2010

Если вы используете Python версии 3.x, оператор деления / приводит к числу с плавающей точкой.Используйте //, чтобы получить усеченное (в традиционном стиле) целочисленное деление.

...