Erreur de type: type d'opérande non supporté (s)
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.
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.