Есть ли способ по существу запустить все приложение заново на Button Release с помощью kivy? - PullRequest
0 голосов
/ 09 ноября 2019

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

Вот файл python:

from kivy import *
import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.textinput import TextInput

#guesses_left = int()
#user_guess = int()





class WannaPlay(Screen):
    pass


class Guesses(Screen):
    pass


class TimeToGuess(Screen):
    pass


class Winner(Screen):
    pass


class Loser(Screen):
    pass


class ScreenManage(ScreenManager):
    pass


kv = Builder.load_file('guessinggame.kv')


class GuessingGameApp(App):
    def build(self):
        return kv

    computer_num = random.randint(1, 10)
    random_num = str(computer_num)
    print(random_num)
    guesses_left = 3


if __name__ == '__main__':
    GuessingGameApp().run()

И файл .kv:

ScreenManage:
    WannaPlay:
    Guesses:
    TimeToGuess:
    Winner:
    Loser:


<WannaPlay>:
    name: 'start'
    GridLayout:
        cols: 1

        Label:
            text: 'Want to Play the Guessing Game?'

        GridLayout:
            cols: 2

            Button:
                name: 'yes'
                text: 'Yes'
                on_release:
                    root.manager.transition.duration = 0
                    root.manager.current = 'guess_choice'

            Button:
                name: 'no'
                text: 'No'
                on_release:
                    app.stop()


<Guesses>
    name: 'guess_choice'
    id: guesses_choice
    GridLayout:
        cols: 1

        Label:
            text: 'You Will Have 3 guesses. Are You Ready?'
        Button:
            name: 'yes_guess'
            text: 'YES'
            on_release:
                root.manager.current = 'time_to_guess'
                root.manager.transition.duration = 0





<TimeToGuess>

    name: 'time_to_guess'
    GridLayout:
        cols: 1

        Label:
            text: 'Guess a number between 1 and 10'
        Label:
            id: guesses_left
            text: 'Guesses Left: 3'

        GridLayout:
            cols: 2

            TextInput:
                id: guess
                name: 'user_guess'

            Button:
                text: 'Submit Answer'
                on_release:

                    app.guesses_left = app.guesses_left - int(1)
                    guesses_left.text = 'Guesses Left: ' + str(app.guesses_left)
                    root.manager.current = 'winner' if guess.text == app.random_num else 'loser' if guess.text != app.random_num and app.guesses_left == int(0) else 'time_to_guess'
                    root.manager.transition.direction = 'left'
                    root.manager.transition.duration = 0
                    guess.text = ''




<Winner>
    name: 'winner'
    GridLayout:
        cols: 1
        Label:
            text: 'You have Won!'
        Label:
            text: 'Would You Like To Play Again?'
        GridLayout:
            cols: 2
            Button:
                text: 'Yes'
                on_release:
                    root.manager.current = 'guess_choice'
                    root.manager.transition.duration = 0

            Button:
                text: 'No'
                on_release:
                    app.stop()
<Loser>
    name: 'loser'
    GridLayout:
        cols: 1
        Label:
            text:'You have Lost!'
        Label:
            text: 'Would You Like To Play Again?'
        GridLayout:
            cols: 2
            Button:
                text: 'Yes'
                on_press:
                    root.manager.current = 'guess_choice'
                    root.manager.transition.duration = 0
            Button:
                text: 'No'
                on_release:
                    app.stop()

Так что, в принципе, когда пользователь нажимает кнопку «Да» в конце, он мне нужен, чтобы в основном перезапустить все. Заранее спасибо!

1 Ответ

0 голосов
/ 09 ноября 2019

Вы можете использовать execv *. Тем не менее, @inclement является правильным.

...