Во-первых, я прошел множество примеров, но не мог понять это, поэтому прошу здесь. Мое приложение должно быть запущено на Android. На экране 1 есть кнопка, которая перейдет на экран 2 при нажатии. Все, что я нужен код, чтобы вернуться к экрану 1 по нажатию кнопки назад на экране 2Реализовать функцию кнопки обратной связи Android в Kivy
Мой код:
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
from random import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from random import random
from random import choice
from kivy.properties import StringProperty
import time
from kivy.clock import Clock
from functools import partial
from kivy.utils import platform
from kivy.core.window import Window
Builder.load_string("""
<MenuScreen>:
Button:
text: "move to next screen 2"
on_press: root.manager.current = 'game_mode'
<GameMode>:
Label:
text: "screen 2"
""")
class MenuScreen(Screen):
pass
class GameMode(Screen):
pass
sm = ScreenManager()
menu_screen = MenuScreen(name='menu')
sm.add_widget(menu_screen)
sm.add_widget(GameMode(name='game_mode'))
class TestApp(App):
def build(self):
self.bind(on_start=self.post_build_init)
return sm
def post_build_init(self,ev):
if platform == 'android':
import android
android.map_key(android.KEYCODE_BACK, 1001)
win = Window
win.bind(on_keyboard=self.key_handler)
def key_handler(self, window, keycode1, keycode2, text, modifiers):
if keycode1 == 27 or keycode1 == 1001:
sm.go_back()
return True
return False
if __name__ == '__main__':
TestApp().run()
Пожалуйста, помогите. Я хочу решение на основе экранного менеджера. Я был бы очень признателен, если бы вы могли улучшить свой код, чтобы обеспечить решение.
У меня есть код, который делает это [здесь] (https://github.com /inclement/phutball/blob/master/main.py#L30), хотя материал для пирога не нужен (и вам, вероятно, следует избегать его, так как мы скоро скоро удалимся от pygame на Android). – inclement
скоро отойти от pygame на Android. что это означает - вы имеете в виду, что киви не должны использоваться для реализации игр для Android? –
Нет, это означает, что вы не должны напрямую вызвать pygame (например, 'import pygame'). Собственный API Kivy будет неизменным и работать так, как он есть всегда - мы используем pygame для некоторых бэкэндов по умолчанию, поэтому в настоящее время можно напрямую импортировать его, но мы не гарантируем его присутствие, и вам следует избегать этого. – inclement