在.py和.kv文件之间共享变量,以及加载和保存

2024-04-25 08:54:22 发布

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

我正在制作一个基于文本的游戏,它几乎完全是在python上完成的。我有一个保存和加载系统,这是一个流畅运行的游戏,然而,我想做一个图形用户界面,使它更友好。我决定用kivy。我已经解决了如何使用屏幕,以及如何在屏幕之间切换(基本上我已经解决了图形方面的问题),但我希望能够在我的应用程序中使用变量,并将进度保存到各种文件中。例如:

我有一个按钮。按下按钮,假设“自我”属性增加1。我在我的.py文件中有这样的自我状态:

presentation = Builder.load_file("Baller.kv") #loads the .kv file I am using
class BallerApp(App):
    ego = 0 #here the ego stat is set to 0
    def build(self):
        return presentation

现在假设我想在运行程序时向该变量添加1(我假设我需要类似“on_release:ego=ego+1”)的内容,并在应用程序运行时将ego变量另存为1。我决定在游戏中保存一个变量统计.txt'我该怎么做?在

最后,当应用程序打开时,您会看到以下主菜单:

enter image description here

当按下“加载游戏”按钮(在本例中,只有ego变量)时,如何将统计数据加载到kivy应用程序中?我知道如何在一个普通的python程序中实现这一点,但是如何在应用程序运行时改变变量呢?在

提前感谢您在这个问题上为我提供的任何帮助:)


Tags: 文件the文本程序程序运行应用程序游戏屏幕
1条回答
网友
1楼 · 发布于 2024-04-25 08:54:22

请参考下面的例子。在

主.py

class RootWidget(BoxLayout):
    ego_stat = NumericProperty(0)

    def update_ego_stat(self):
        self.ego_stat += 1

    def save_ego_stat(self):
        with open("ego_stat.txt", "w") as fobj:
            fobj.write(str(self.ego_stat))

    def load_ego_stat(self):
        with open("ego_stat.txt") as fobj:
            for stat in fobj:
                self.ego_stat = int(stat.rstrip())


class TestApp(App):

    def build(self):
        return RootWidget()


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

试验电压

^{pr2}$

输出:

enter image description here

相关问题 更多 >