Typeerror: Nicht unterstützter Operandentyp (en)
Frage
Dies ist ein Programm, ich schreibe das sollte der Text in einem Fenster angezeigt werden ...
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()
... aber jedesmal, wenn ich versuche, es laufen ich diesen Fehler
line 16
x = TextLayout.width / 2,
TypeError: unsupported operand type(s) for /: 'property' and 'int'
Ich bin mir ziemlich sicher, dass dies bedeutet, dass ich versucht, eine Zeichenfolge zu teilen, sondern in der Pyglet Dokumentation heißt es, dass die Breite und Höhe Ints sind. Ich habe keine Ahnung, was ich falsch mache.
Lösung
TextLayout
ist eine Klasse - so TextLayout.width
ist eine rohe Eigenschaft, ziemlich nutzlos zu Ihnen; Sie width
von einem Beispiel: der TextLayout
Klasse, nicht von der Klasse selbst bekommen! Darüber hinaus ist die Klasse speziell um das Layout von Textdokumenten verwendet, so dass ich nicht wirklich sehen, warum Sie es überhaupt bekommen möchten (da Sie kein Dokument bezwecken um).
Ich vermute, dass das, was Sie wirklich wollen, ist:
x = self.width / 2,
y = self.height / 2,
und entfernen Sie den Import von und alle Erwähnungen, TextLayout
.
Andere Tipps
Wenn Sie mit Python-Version 3.x die Divisions-Operator /
Ergebnisse in einem Schwimmer Nummer. Verwenden //
zu abgeschnitten (traditionellen Stil) Integer-Division zu erhalten.