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()