class MyButton(Button):
my_state = StringProperty('') # this will be 'b1' or 'b2', even when button is not down
my_down_image = StringProperty('')
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
rx, ry = self.to_widget(*touch.pos, relative=True)
if ry > self.height/2.0: # more complex geometry calculation required
self.my_down_image = 'B2Down.png'
self.my_state = 'b2'
else:
self.my_down_image = 'B1Down.png'
self.my_state = 'b1'
return super(MyButton, self).on_touch_down(touch)
1条答案
按热度按时间nzk0hqpo1#
你可以延长
Button
表现得像两个人一样Buttons
:这个
MyButton
类将两个属性添加到Button
这个my_state
和my_down_image
财产。这个my_state
财产将被没收b1
或b2
取决于按下的子按钮(由on_touch_down()
). 这个my_down_image
属性设置为B1Down.png
或B2Down.png
描述了我们想要的MyButton
看起来像B1
或B2
压力很大。上述代码中的简单y坐标比较不起作用,必须更加复杂才能正确确定按下了哪个子按钮。这个MyButton
可用于kv
这样地:在哪里
app
方法如下所示:而且
kv
:以上
kv
规则主要只是默认规则的副本Button
基维使用的规则。唯一的变化是使用my_down_image
在state_image
定义。对于本例
B1andB2.png
可以是:B1Down.png
:及
B2Down.png
: