在Kivy中引用另一个类的函数

时间:2016-04-01 09:32:44

标签: android python function python-3.x kivy

所以这是我的代码及其作用:

Label:
    id: easyscore
    text: "0"
    font_size: 44
    bold: True
    color: [1, 1, 1, 1]

此标签位于名为easy的屏幕类上,它会对分数进行计数。

Button:
    text: "Restart"
    font_size: 32
    bold: True
    color: [1, 1, 1, 1]
    background_normal: ""
    background_color: [0.31, 0.4, 0.63, 1]
    on_release: root.rst_gmvr()

此按钮位于名为gameovereasy的屏幕类上,当它被释放时,它应该将屏幕更改为easy并将得分计数器重置为零。

前两个代码块是用.kv文件编写的,以下两个是用.py文件写的

它调用的函数叫做rst_gmvr,它位于gameovereasy屏幕类中,它看起来像:

def rst_gmvr(self):
    easy().rec_rst()

然后,此函数调用一个名为rec_rst的函数,该函数位于easy screen类中,它看起来像:

def rec_rst(self):
    self.ids.easyscore.text = "0"
    sm.current = "easy"

因此,此函数应将名为easyscore的得分计数器标签重置为0并将屏幕更改为简单。但是,它只会更改屏幕而不是分数计数器标签。

有人可以帮助我了解如何在释放按钮时更改屏幕和分数计数器标签。

谢谢:)

顺便说一下,当释放按钮时,没有给出错误消息。如果您需要更多信息和/或代码来回答这个问题,我很乐意将其提供给您。

1 个答案:

答案 0 :(得分:1)

正如您所说,您在两个不同的类中有两个函数,因此您需要让类看到彼此。基本上你需要在小的时候访问另一个函数,或者在你的情况下你需要另一个类来维护你所有的类。

第二个选项已经存在,你只需要键入一些内容,因为类是App(),它用于每个应用程序。将班级easygameovereasy分配给App(),并通过get_running_app()通过应用程序调用,如下所示:

class My(...):
    def __init__(self, **kwargs):
        self.app = App.get_running_app()
        self.my = self.app.my

class MyAppClass(App):
    my = My()
    def build(self):
        ...

或直接self.my = App.get_running_app().my然后使用my.function()调用该函数。您需要将它添加到您想要与之通信的每个班级。

相关问题