Это одно решение
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()