Search code examples
kivyscreenpopupwindow

Kivy regarding Popup Windows and Screens


i have a question, in Kivy is it possible to change to another screen from popup window?


Solution

  • This is one solution

    enter image description here

    from kivy.lang.builder import Builder
    from kivy.app import App
    from kivy.uix.popup import Popup
    
    kv = """
    #:import Factory kivy.factory.Factory
    
    <ChangePopup>:
        size_hint: (None, None)
        size: (200, 200)
    
        Button: 
            text: "Change screen"
            on_press: app.root.current = 'screen2'; root.dismiss()
    
    ScreenManager:
        Screen:
            BoxLayout:
                orientation: 'vertical'
                Label:
                    text: "Screen1"
                Button:
                    text: "Open Popup to change to Screen2"
                    on_press: Factory.ChangePopup().open()
        Screen:
            name: 'screen2'
            Label:
                text: "Screen2"
    """
    
    class ChangePopup(Popup):
        pass
    
    sm = Builder.load_string(kv)
    
    class NewApp(App):
    
        def build(self):
            return sm
    
    if __name__ == '__main__':
        NewApp().run()