打印 NumericProperty() kivy 的值
print the value of a NumericProperty() kivy
如果我的两个屏幕上有一个数字 属性 来计算一个人点击正确图标的次数,我想在单独的 class 中打印它,我该怎么做?我尝试使用 print()
函数并使用 print(StringProperty(str()))
但我没有打印数值。当我在 VerifyAA()
和 VerifyBB()
中打印 correct_counter 时,打印了正确的值。
class A(Screen):
correct_counter1 = NumericProperty(0)
def verifyAA(self, *args):
if self.AA == V.Check1 or self.AA == V.Check2 or self.AA == V.Check3:
print("You got it!!!")
self.correct_counter1 = self.correct_counter1 + 1
print(self.correct_counter1)
self.ids.aa.disabled = True
class B(Screen):
correct_counter2 = NumericProperty(0)
def verifyBB(self, *args):
if self.BB == VV.Check1 or self.BB == VV.Check2 or self.BB == VV.Check3:
print("You got it!!!")
self.correct_counter2 = self.correct_counter2 + 1
print(self.correct_counter2)
self.ids.bb.disabled = True
class Answers(Screen):
print(A.correct_counter1)
print(StringProperty(str(B.correct_counter2)))
这是分别打印的内容:
<NumericProperty name=correct_counter>
<StringProperty name=>
您需要了解 class 的定义和 class 的实例之间的区别。当您打印 A.correct_counter1
时,您会打印定义在 class 级别的 NumericProperty 对象本身。这是唯一合理的结果——打印 属性 的值没有意义,因为它 没有 值。例如,如果您写 instance1 = A(correct_counter1=1); instance2 = A(correct_counter1=20)
您希望 print(A.correct_counter1)
打印什么值?答案不一定是,属性 的值在每种情况下都是为 class 实例定义的,而不是 class 本身。
正确的解决方案是您必须通过 class 的实例打印 属性 的值。例如,如果你写 instance = A(); print(instance.correct_counter1)
你会打印出你期望的数字。执行此操作的最佳方法取决于程序的结构和 classes 之间的关系。您的示例不是可运行的程序,因此无法提出具体建议。如果你有一个实际的例子,你想这样做但不知道如何做,post那是一个新问题。
如果我的两个屏幕上有一个数字 属性 来计算一个人点击正确图标的次数,我想在单独的 class 中打印它,我该怎么做?我尝试使用 print()
函数并使用 print(StringProperty(str()))
但我没有打印数值。当我在 VerifyAA()
和 VerifyBB()
中打印 correct_counter 时,打印了正确的值。
class A(Screen):
correct_counter1 = NumericProperty(0)
def verifyAA(self, *args):
if self.AA == V.Check1 or self.AA == V.Check2 or self.AA == V.Check3:
print("You got it!!!")
self.correct_counter1 = self.correct_counter1 + 1
print(self.correct_counter1)
self.ids.aa.disabled = True
class B(Screen):
correct_counter2 = NumericProperty(0)
def verifyBB(self, *args):
if self.BB == VV.Check1 or self.BB == VV.Check2 or self.BB == VV.Check3:
print("You got it!!!")
self.correct_counter2 = self.correct_counter2 + 1
print(self.correct_counter2)
self.ids.bb.disabled = True
class Answers(Screen):
print(A.correct_counter1)
print(StringProperty(str(B.correct_counter2)))
这是分别打印的内容:
<NumericProperty name=correct_counter>
<StringProperty name=>
您需要了解 class 的定义和 class 的实例之间的区别。当您打印 A.correct_counter1
时,您会打印定义在 class 级别的 NumericProperty 对象本身。这是唯一合理的结果——打印 属性 的值没有意义,因为它 没有 值。例如,如果您写 instance1 = A(correct_counter1=1); instance2 = A(correct_counter1=20)
您希望 print(A.correct_counter1)
打印什么值?答案不一定是,属性 的值在每种情况下都是为 class 实例定义的,而不是 class 本身。
正确的解决方案是您必须通过 class 的实例打印 属性 的值。例如,如果你写 instance = A(); print(instance.correct_counter1)
你会打印出你期望的数字。执行此操作的最佳方法取决于程序的结构和 classes 之间的关系。您的示例不是可运行的程序,因此无法提出具体建议。如果你有一个实际的例子,你想这样做但不知道如何做,post那是一个新问题。