Verwendung der ObjectProperty-Klasse

Ich habe gerade angefangen zu lernen Kivy und ich bin sehr verwirrt über die Verwendung der ObjectProperty-Klasse, und wie es braucht keine als Argument. Könnte jemand es bitte erklären? Ich fand es in der Kivy Tutorial:

class PongGame(Widget): ball = ObjectProperty(None) def update(self, dt): self.ball.move() # bounce off top and bottom if (self.ball.y < 0) or (self.ball.top > self.height): self.ball.velocity_y *= -1 # bounce off left and right if (self.ball.x < 0) or (self.ball.right > self.width): self.ball.velocity_x *= -1 

One Solution collect form web for “Verwendung der ObjectProperty-Klasse”

Die Kivy- Property ist eine Bequemlichkeitsklasse, die dem eigenen property von Python ähnelt, aber auch die Typprüfung, Validierung und Ereignisse. ObjectProperty ist eine spezialisierte Unterklasse der Property Klasse, also hat sie die gleichen Initialisierungsparameter wie sie:

Standardmäßig nimmt eine Eigenschaft immer einen Standardwert an. [.] Der Standardwert muss ein Wert sein, der mit dem Objekttyp übereinstimmt. Beispielsweise können Sie keine Liste auf eine StringProperty setzen, da die StringProperty den Standardwert überprüft.

Keiner ist ein spezieller Fall: Sie können den Standardwert einer Eigenschaft auf Keine setzen, aber Sie können nicht auf eine Eigenschaft nachher setzen. Wenn du das wirklich tun willst, musst du die Eigenschaft mit allownone = True [.]

(Aus der Kivy Property documentation )

In deinem Code hat PongGame eine ball Eigenschaft, die anfangs auf None und später ein Ball-Objekt zugewiesen wird. Dies ist in der kv-Datei definiert:

 <PongGame>: ball: pong_ball PongBall: id: pong_ball center: self.parent.center 

Da kein Objekt an den Initialisierer übergeben wurde, kann jedem Objekt ein Objekt zugeordnet werden. Sie könnten es einschränken, um nur Ballobjekte zu halten, indem man sie mit einem Dummy-Wert initialisiert:

 ball = ObjectProperty(PongBall()) 
  • Python, Circular Dependencies und Singletons
  • Wie füge ich Schaltflächen hinzu, die dynamisch in reiner Python zu einem Kivy-Layout erstellt werden, das in Kivy Language geschrieben ist?
  • Kivy OpenGL-Anforderungen für den Einsatz möglich?
  • Wie man unendliche Integer-Werte in einem Spinner erlaubt?
  • Verwenden von Kivy mit Python 3.4
  • Kivy Standalone android apk auf Windows
  • Kivy - Bind Label Text zu Variable (nur Python)
  • Python Spyder Initialisierung Hallo Welt Kivi App einmal?
  • Wie installiere ich Buildozer auf Ubuntu 13.10, um eine Android APK einer Kivy App zu erstellen?
  • Gibt es einen einfachen Weg, um eine Grenze zu Kivy Labels, Buttons, Widgets etc. ohne Bilder hinzuzufügen?
  • Kivy: Ungültige Instanz in App.root
  • Python ist die beste Programmiersprache der Welt.