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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top