如何让程序在kivy中重新启动?

2024-06-06 03:11:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是基维的新手。我做了一个井字游戏,但当其中一个玩家获胜时,我希望游戏重新开始,玩家可以再次玩。我该如何在kivy中实现这个呢?或者我应该重置游戏所基于的按钮和列表?我试过很多东西

self.clear_widgets()

但没用

这是main.py

^{pr2}$

这是提塔托.kv在

<EntryButton>:
    obj: obj
    id: obj
    on_press: root.play()



<TicTable>:
    orientation: "vertical"
    BoxLayout:
        EntryButton:
            n:1
            text: ""
        EntryButton:
            n:2
            text: ""
        EntryButton:
            n:3
            text:""
    BoxLayout:
        EntryButton:
            n:4
            text: ""
        EntryButton:
            n:5
            text: ""
        EntryButton:
            n:6
            text: ""
    BoxLayout:
        EntryButton:
            n:7
            text: ""
        EntryButton:
            n:8
            text: ""
        EntryButton:
            n:9
            text: ""




TicTable:

Tags: textselfobj游戏列表玩家按钮重置
1条回答
网友
1楼 · 发布于 2024-06-06 03:11:15

您的TicTacToeApp应该具有返回小部件的build方法。在

我给你举个例子,它是一个智力测验应用程序,当正确的按钮被按下(或释放,在kivylang),应用程序将更新它的测验。在

    import random
    from kivy.app import App
    from kivy.uix.button import Button
    from kivy.uix.gridlayout import GridLayout
    from kivy.uix.label import Label

    Q_sets = ["1+1=...","1+6=...","77-43=..."];
    Opt_sets = [["2", "23"], ["4","7"], ["34","66"]];
    Ans_sets = ["2","7", "34"];

    class Option(Button):
        def __init__(self, label):
           super().__init__(self);
           self.text = label;
        def on_release(self):
           super().on_release(self);
           if self.text == self.parent.answer:
               self.parent.parent.clear_widgets();
               index = int(random.uniform(0, 3));
               New = Quiz(Q_sets[index], Opt_sets[index][0], Opt_sets[index][1], Ans_sets[index]);      
               self.parent.parent.add_widget(New);


    class Quiz(GridLayout):
        def __init__(self, question, opt1, opt2, correct):
           super().__init__(self, rows=3, cols=1);
           self.question_label = Label(text=question);
           self.opt1_button = Option(label=opt1);
           self.opt2_button = Option(label=opt2);
           self.answer=correct;
           self.add_widget(self.question_label);
           self.add_widget(self.opt1_button);
           self.add_widget(self.opt2_button);

    class QuizzesApp(App):
        def build(self):
            Container = GridLayout(); 
            Container.add_widget(Quiz(Q_sets[0], Opt_sets[0][0], Opt_sets[0][1], Ans_sets[0]));  
            return Container    

你可以先研究一下,然后为你自己的情况即兴发挥。这样可以吗?在

相关问题 更多 >