Question

Ceci est un programme que je vous écris qui est censé afficher un texte dans une fenêtre ...

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()

... mais chaque fois que je tente de l'exécuter je reçois cette erreur

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

Je suis assez sûr que cela veut dire que j'ai essayé de diviser une chaîne, mais dans la documentation Pyglet il est dit que la largeur et la hauteur sont ints. Je ne sais pas ce que je fais mal.

Était-ce utile?

La solution

TextLayout est class - si TextLayout.width est une propriété première, assez inutile de vous; vous voulez obtenir width d'un par exemple de la classe TextLayout, pas de la classe elle-même! De plus, la classe est spécifiquement utilisé pour exposer des documents texte, donc je ne vois vraiment pas pourquoi vous voulez obtenir du tout (puisque vous n'avez pas l'objet de documents autour).

Je pense que ce que vous voulez réellement est:

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

et supprimer l'importation de et toutes les mentions, TextLayout.

Autres conseils

Si vous utilisez la version Python 3.x l'opérateur de division / résultats dans un numéro de type flottant. Utilisez // pour tronqués (style traditionnel) entier division.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top