Python + Kivy: телефонная кнопка назад

Есть похожие вопросы тут, но все не то.

У меня есть готовое приложение, оно работает на андроиде.

Мне надо чтоб при нажатии на кнопку "Назад" на телефоне, появлялось предупреждение: "Вы уверенны, что хотите покинуть приложение" ДА / НЕТ

На данный момент приложение просто схлопывается.


Ответы (1 шт):

Автор решения: Yan Wolf
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import ObjectProperty

kv ="""
<ScreenFrame>:
    orientation: 'vertical'
    cols: 2

    ActionBar:
        ActionView:
            pos_hint: {'top':1}
            use_separator: True
            ActionPrevious:
                title: "Семь раз замерь, один раз залей"
                with_previous: False
            ActionButton:
                text: "На главную"
                on_press: root.back_menu()

    BoxLayout:
        orientation: 'vertical'
        cols: 2
        size_hint: 1, 0.30

        Button:
            text: "Кнопка1"

        BoxLayout:
            orientation: 'horizontal'
            cols: 2
            size_hint: 1, 1

            Button:
                text: "Кнопка2"


            Button:
                text: "Кнопка3"

<Start_Screen>:
    ScreenFrame:
        BoxLayout:
            Label:
                text: "?"
                id: server
            Label:
                text: "?"
                id: bases
            Button:
                text: "ОБНОВИТЬ"

"""

Builder.load_string(kv)


class ScreenFrame(BoxLayout):

    def start_screen_menu(self):
        sm.current = "start"


class Start_Screen(Screen):

    _screen_manager = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(Start_Screen, self).__init__(**kwargs)

        Window.bind(on_keyboard=self.Android_back_click)

    def Android_back_click(self, window, key, *largs):
        if key == 27:
            sm.current = "start"
            print(" При нажатии на кнопку ESC или кнопку Назад на телефоне, вернет в Start_Screen")
            return True


sm = ScreenManager()
sm.add_widget(Start_Screen(name='start'))

class MainApp(App):
    def build(self):
        return sm

if __name__ == "__main__":
    MainApp().run()
→ Ссылка