Я хочу связать клавишу esc, чтобы я мог переключать экраны при нажатии кнопки возврата Android.
Насколько я понимаю, я выполнил управление экраном через файл kv, и это вызвало у меня проблемы с работой примеров связывания в сети (в которых используется управление, выполненное в файле py).
Вот что у меня есть:
weather.kv
ScreenManager:
id: screen_manager
SearchScreen:
id: search_screen
name: 'SearchScreen'
manager: screen_manager
ForecastScreen:
id: forecast_screen
name: 'ForecastScreen'
manager: screen_manager
<SearchScreen>:
<ForecastScreen>:
Тогда в main.py
class SearchScreen(Screen):
location = StringProperty('No location')
def set_location(self, address):
self.location = str(address)
self.manager.current = "ForecastScreen"
class ForecastScreen(Screen):
#code
sm=Builder.load_file('weather.kv')
class WeatherApp(App):
def build(self):
Window.bind(on_keyboard=self.on_key)
return sm
def on_key(self, window, key, *args):
if key == 27: # the esc key
if self.screen_manager.current_screen.name == "SearchScreen":
return False # exit the app from this page
elif self.screen_manager.current_screen.name == "ForecastScreen":
self.screen_manager.current = "SearchScreen"
return True
if __name__ == "__main__":
WeatherApp().run()
Дайте мне знать, если вам нужно увидеть больше моего кода. Переключение экрана на основе кнопок работает, но self.screen_manager сообщает, что screen_manager не является частью объекта self.