kivy库的新功能,并且在动态更新属性时遇到一些麻烦。这里的标签只是一个占位符。最终,我希望显示的图像根据用户点击/触摸的象限顺序改变。
程序运行正常,没有错误,悬停标签(label2)不更新(label1确实更新)。当我点击四个象限时,象限数字会像我期望的那样显示在控制台上。每当用户点击Q1时,我也会打印出self.incr,这也会显示并增加,这意味着incr属性正在增加。
所以,我无法弄清楚为什么它没有为标签更新。
main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.image import Image
class TouchInput(Widget):
def __init__(self,**kwargs):
self.incr = 5
super(TouchInput,self).__init__(**kwargs)
def on_touch_up(self, touch):
if touch.x < self.width / 2:
lateral = 'left'
elif touch.x > self.width / 2:
lateral = 'right'
else:
lateral = None
if touch.y < self.height / 2:
vertical = 'bottom'
elif touch.y > self.height / 2:
vertical = 'top'
else:
vertical = None
if vertical and lateral:
if lateral == 'left' and vertical == 'top':
quadrant = 1
print 'Q1'
self.incr += 1
print self.incr
elif lateral == 'right' and vertical == 'top':
quadrant = 2
print 'Q2'
elif lateral == 'left' and vertical == 'bottom':
quadrant = 3
print 'Q3'
elif lateral == 'right' and vertical == 'bottom':
quadrant = 4
print 'Q4'
class PPVT(App):
def build(self):
t = TouchInput()
print t.incr
return t
if __name__ == "__main__":
PPVT().run()
main.kv
<TouchInput>:
Image:
source: 'img1.jpg'
size: root.width, root.height
Label:
id: label1
text: str(root.width)
pos: root.width / 2, root.height / 2
Label:
id: label2
text: str(root.incr)
答案 0 :(得分:1)
使用数字属性,因此kivy可以跟踪其更改。
from kivy.properties import NumericProperty
...
class TouchInput(Widget):
incr = NumericProperty(5)
...