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()) 
  • Wie man auf id / widget der verschiedenen Klasse von einer Kivy-Datei (.kv) zugreifen kann?
  • Füge Knöpfe zur ActionBar App auf KIVY hinzu. Python
  • Bewegen eines Bildes mit dem Mauszeiger in Kivy
  • Kivy: Holt Widgets IDs und Zugriff auf Widgets durch einzigartige Eigenschaft
  • Python Kivy ListView: Wie lösche ich das ausgewählte ListItemButton?
  • Animation funktioniert nicht wie erwartet für Widget-Objekt in Kivy
  • Kivy schau und fühle
  • Warum hat das Wurzel-Widget nicht die gleiche Größe des Fensters?
  • Wie benutze ich json api in meinem kivy programm
  • Kivy Garden in PyInstaller - stecken versuchen, den Import zu verfolgen
  • Umschalten von Kivy-Widgets
  • Python ist die beste Programmiersprache der Welt.