Как я могу перейти на следующую страницу, а также вызвать функцию нажатием кнопки в kivy? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть приложение с двумя кнопками на первом экране.Я хочу, чтобы обе кнопки направлялись на следующую страницу и одновременно вызывали их соответствующие функции.Может кто-нибудь помочь мне с ссылкой или кодами.Заранее спасибо.

1 Ответ

0 голосов
/ 02 июля 2019

В следующем примере показано использование виджетов Kivy ScreenManager, Button и событий кнопок on_release и on_press.

main.py

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

# Create both screens. Please note the root.manager.current: this is how
# you can control the ScreenManager from kv. Each screen has by default a
# property manager that gives you the instance of the ScreenManager used.
Builder.load_string("""
<ScreenManagement>:
    MenuScreen:
        id: name
        name: 'menu'

    SettingsScreen:
        id: settings
        name: 'settings'

<MenuScreen>:
    BoxLayout:
        Button:
            text: 'Goto settings & invoke function abc'
            on_release: 
                root.manager.current = 'settings'
                root.manager.ids.settings.func_abc(self)    # optional: passing Button instance

        Button:
            text: 'Goto settings & invoke function xyz'
            on_release: 
                root.manager.current = 'settings'
                root.manager.ids.settings.func_xyz(self)    # optional: passing Button instance

<SettingsScreen>:
    BoxLayout:
        Button:
            text: 'My settings button'
        Button:
            text: 'Back to menu'
            on_press: root.manager.current = 'menu'
""")


# Declare both screens
class MenuScreen(Screen):
    pass


class SettingsScreen(Screen):

    def func_abc(self, instance):
        print(f"func_abc: Called from Button with text={instance.text}")

    def func_xyz(self, instance):
        print(f"func_xyz: Called from Button with text={instance.text}")


# Create the screen manager
class ScreenManagement(ScreenManager):
    pass


class TestApp(App):

    def build(self):
        return ScreenManagement()


if __name__ == '__main__':
    TestApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...