所以这是我的代码及其作用:
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并将屏幕更改为简单。但是,它只会更改屏幕而不是分数计数器标签。
有人可以帮助我了解如何在释放按钮时更改屏幕和分数计数器标签。
谢谢:)
顺便说一下,当释放按钮时,没有给出错误消息。如果您需要更多信息和/或代码来回答这个问题,我很乐意将其提供给您。
答案 0 :(得分:1)
正如您所说,您在两个不同的类中有两个函数,因此您需要让类看到彼此。基本上你需要在小的时候访问另一个函数,或者在你的情况下你需要另一个类来维护你所有的类。
第二个选项已经存在,你只需要键入一些内容,因为类是App()
,它用于每个应用程序。将班级easy
和gameovereasy
分配给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()
调用该函数。您需要将它添加到您想要与之通信的每个班级。