Verweis auf eine Funktion von einer anderen Klasse in Kivy

Also das ist mein Code und was es tut:

Label: id: easyscore text: "0" font_size: 44 bold: True color: [1, 1, 1, 1] 

Dieses Label ist auf einer Bildschirmklasse genannt einfach und es zählt die Punktzahl.

 Button: text: "Restart" font_size: 32 bold: True color: [1, 1, 1, 1] background_normal: "" background_color: [0.31, 0.4, 0.63, 1] on_release: root.rst_gmvr() 

Diese Schaltfläche befindet sich auf einer Bildschirmklasse namens gameovereasy und wenn es freigegeben wird, sollte es den Bildschirm wieder auf einfach ändern und den Zähler zurücksetzen auf Null zurücksetzen.

Die vorherigen 2 Codeblöcke wurden in einer .kv-Datei geschrieben, die folgenden 2 werden in einer .py-Datei geschrieben

Die Funktion, die es anruft heißt rst_gmvr und es ist in der gameovereasy Bildschirmklasse und es sieht aus wie:

 def rst_gmvr(self): easy().rec_rst() 

Diese Funktion ruft dann eine Funktion namens rec_rst auf, die sich in der einfachen Bildschirmklasse befindet und wie es aussieht:

 def rec_rst(self): self.ids.easyscore.text = "0" sm.current = "easy" 

Also also diese Funktion sollte das Score Counter Label namens easyscore zurück auf 0 zurücksetzen und den Bildschirm einfach ändern. Allerdings ändert es nur den Bildschirm und nicht das Score Counter Label.

Kann mir jemand helfen, zu verstehen, wie man sowohl den Bildschirm als auch das Score Counter Label ändert, wenn die Schaltfläche losgelassen wird.

Vielen Dank 🙂

Übrigens, wenn die Taste losgelassen wird, werden keine Fehlermeldungen ausgegeben. Wenn Sie weitere Informationen und / oder Code benötigen, um dies zu beantworten, werde ich es gerne Ihnen geben.

  • Beispiel für Touch Event mit Webdriver Python?
  • Wie man Videos aus dem Internet wie youtube in Kivy spielt
  • Wie kann ich den ganzen Python-Interpreter in einem Android APK verpacken?
  • Ausführen von mehreren adb-Befehlen mit python Popen oder os.system
  • Buildozer-Fehler, CalledProcessError (Kivy)
  • Python für Android APK ohne Abhängigkeiten
  • One Solution collect form web for “Verweis auf eine Funktion von einer anderen Klasse in Kivy”

    Wie du sagst, hast du zwei Funktionen in zwei verschiedenen Klassen, also musst du die Klassen sehen. Grundsätzlich müssen Sie entweder auf eine Funktion in einem anderen zugreifen, wenn es etwas klein ist, oder in Ihrem Fall benötigen Sie eine andere Klasse, die alle Ihre Klassen beibehalten würde.

    Die zweite Option ist schon da, du musst nur etwas eingeben, denn die Klasse ist App() die du für jede Anwendung nimmst. Zuordnen Sie Klassen easy und gameovereasy zu App() und verwenden Sie den Anruf über die Anwendung über get_running_app() wie get_running_app() :

     class My(...): def __init__(self, **kwargs): self.app = App.get_running_app() self.my = self.app.my class MyAppClass(App): my = My() def build(self): ... 

    Oder direkt self.my = App.get_running_app().my und dann ruf die Funktion mit my.function() . Sie müssen es zu jeder Klasse hinzufügen, mit der Sie kommunizieren möchten.

    Python ist die beste Programmiersprache der Welt.