Задержка часов обратного отсчета, пока я не поменяю экраны - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь сделать простую игру памяти с обратным отсчетом в начале каждой игры.Приложение начнется с кнопки начала теста памяти, которая приведет вас к первой игре.Когда появится экран игры, я хочу начать обратный отсчет за 10 секунд до его начала.В настоящее время, когда я открываю приложение, отсчет начинается, прежде чем я меняю экраны.Текущий игровой экран называется экраном настроек.

main.py

class HomeScreen(Screen):
    pass

class GameScreen(Screen):
    pass

class SettingsScreen(Screen):
    pass

class ImageButton(ButtonBehavior, Image):
    pass

GUI = Builder.load_file("main.kv")

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

    def change_screen(self, screen_name):
        #get the screen manager from the kv file
        screen_manager = self.root.ids['screen_manager']
        screen_manager.current = screen_name

    def on_start(settings_screen):
        settings_screen.function_interval = Clock.schedule_interval(settings_screen.update_label, 1)
        Clock.schedule_once(settings_screen.stop_interval, 10)
    def stop_interval(settings_screen, *args):
        settings_screen.function_interval.cancel()
    def update_label(settings_screen, *args):
        settings_screen.root.ids.counter.text = str(int(settings_screen.root.ids.counter.text) - 1)

MainApp().run()

main.kv

#:include kv/homescreen.kv
#:include kv/settingsscreen.kv

GridLayout:
    cols: 1
    ScreenManager:
        id: screen_manager
        HomeScreen:
            name: "home_screen"
            id: home_screen
        SettingsScreen:
            name: "settings_screen"
            id: settings_screen
            Label:
                id: counter
                text:"10"
        GameScreen:
            name: "game_screen"
            id: game_screen

settingsscreen.kv

<SettingsScreen>:
    GridLayout:
        canvas:
            Color:
                rgb: utils.get_color_from_hex("#39B3F2")
            Rectangle:
                size: self.size
                pos: self.pos
        rows: 2
        ImageButton:
            source: "kv\\icons\\red1.png"
            on_release:
                print("selected red button")
        ImageButton:
            source: "kv\\icons\\yellow1.png"
            on_release:
                print("selected yellow button")
        ImageButton:
            source: "kv\\icons\\yellow2.png"
            on_release:
                print("selected yellow button")
        ImageButton:
            source: "kv\\icons\\red2.png"
            on_release:
                print("selected red button")
...