【问题标题】:Restarting an app in kivy在kivy中重新启动应用程序
【发布时间】:2015-01-12 06:39:25
【问题描述】:

我编写了一个简单的游戏,我想在按下某个按钮后重新启动(以便一切都回到应用程序运行时的位置)。 所以问题是:我需要在 on_press 中输入什么才能再次启动 Game() ance?

class Game(Widget):
    (...)
    def but_add(self, player):
        self.add_widget(Button(text=player,
                               font_size=30,
                               center_x=self.width/2,
                               center_y=self.height/2,
                               size=(self.height, self.height*7/20),
                               background_normal='katana.jpg',
                               background_down='katana.jpg',
                               markup=True,
                               on_press= ???????? ))
    (...)

class Okiya(App):
    def build(self):    
        return Game()

if __name__ == "__main__":
    Okiya().run()

【问题讨论】:

    标签: android python button kivy restart


    【解决方案1】:

    您可能并不想重新启动整个应用程序,而只是重置其状态。这样做的机制取决于你,你是知道初始状态应该是什么样子的人;例如,您可以使用on_press=self.reset_func 并定义reset_func 方法来执行所有这些任务。

    您还可以删除小部件并添加一个新实例,该实例将具有默认属性。

    【讨论】:

    • 我该如何“删除小部件并添加一个具有默认属性的新实例”?
    • 要查看的小部件方法是 .clear_widgets() 和 .canvas.clear()。检查文档以获取可能的参数和其他有用的方法。据我所知,没有一种方法可以做到这一点,因此您可能需要为每个应用定制自己的程序。
    【解决方案2】:

    我不确切知道它的价值,但以下适用于我正在做的应用程序:

    将以下方法添加到您的应用程序类中:

    class Okiya(App):
        def restart(self):
            self.root.clear_widgets()
            self.stop()
            return Okiya().run()
    

    然后从要重启应用的python文件中调用该方法:

    App.get_running_app().restart()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多