Kivy Screenmanager unter Android

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Mr_Martin
User
Beiträge: 9
Registriert: Samstag 5. Januar 2019, 19:39

Hallo zusammen,
Hab mich die letzten Wochen ein bisschen mit der GUI-Entwicklung mit Kivy beschäftigt.
Ich nutze dafür mein Smartphone (Samsung Galaxy S9+) mit Qpython 3 und Kivy Launcher.

Bis jetzt hat damit alles super geklappt, was ich probiert habe, bis auf das Laden von neuen Screen mit dem ScreenManagement.
Habe mir dafür schon alle möglichen Text- und Videotutorials angeschaut die ich zu dem Thema finden konnte (sind ja echt nicht wenige^^) aber keins davon hat bei mir funktioniert. Kivy startet und stürzt sofort ab.

Hier mein derzeitiger Versuch:
main.py:

Code: Alles auswählen

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.lang import Builder   

class MainScreen(Screen):
    pass

class AnotherScreen(Screen):
    pass
       
class ScreenManagement(ScreenManager):
    pass           
       

presentation = Builder.load_file("main.kv")
                
class MyApp(App):
    def build(self):
        return presentation()

if __name__ == "__main__":
    MyApp().run()
Und die main.kv:

Code: Alles auswählen

#: import FadeTransition kivy.uix.screenmanager.FadeTransition
<ScreenManagement>:
    transition: FadeTransition()
    MainScreen:
    AnotherScreen:
    
<MainScreen>:
    name: 'main'   
    Button: 
        on_release: app.root.current = 'other'              
        text:'Next Screen'
        font_size: 50


<AnotherScreen>:
    name: 'other'
    Button: 
        on_release: app.root.current = 'main'             
        text:'Back Home'
        font_size: 50
Beide Dateien stecken zusammen mit der 'android.txt' in einem Ordner 'MyApp' und dieser ist im Ordner 'kivy

Habe es auch schon ohne Transition probiert aber das ändert nichts.

Ich hoffe ihr könnt mir weiterhelfen.

Grüße Martin
lenaslnr
User
Beiträge: 9
Registriert: Mittwoch 8. April 2020, 16:23

Hallo Martin,

kann es sein dass du dem ScreenManager noch die beiden Screens übergeben musst, also so:

sm = ScreenManager()
class MainScreen(Screen)
pass
class AnotherScreen(Screen)
pass

sm.add_widget(MainScreen(name='main))
sm.add_widget(AnotherScreen(name='other))
Antworten