Python-Kivy:on_touch_down() 定义为特定子项影响所有子项
Python-Kivy: on_touch_down() defined to specific children affects on all childrens
我想制作一个 android-lock 之类的东西,所以我有 2 个按钮图像(按钮正常,按钮按下)。
我在每个图像上定义了一个函数 on_touch_down,所以当我按下它时,它会将源更改为按下的按钮,而 on_touch_up 会将其恢复正常。但是每次我按下屏幕的任何部分时,它都会立即更改所有按钮。
如何让它在我按下时只改变每个按钮,而不是在我按下任何地方时改变一切?
这是我的 kv 文件:
Manager:
Principal:
<Principal>:
GridLayout:
cols: 3
Image:
id: '1'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '2'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '3'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '4'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '5'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '6'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '7'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '8'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '9'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
不要定义 on_touch_*
事件处理程序,而是在 ButtonBehavior
:
的帮助下定义可点击的图像 class
from kivy.uix.behaviors.button import ButtonBehavior
class ClickableImage(ButtonBehavior, Image):
def on_press(self):
pass
def on_release(self):
pass
现在,您可以在您的 kv 文件中使用它了。还有其他的行为,你可以去查看here.
我想制作一个 android-lock 之类的东西,所以我有 2 个按钮图像(按钮正常,按钮按下)。
我在每个图像上定义了一个函数 on_touch_down,所以当我按下它时,它会将源更改为按下的按钮,而 on_touch_up 会将其恢复正常。但是每次我按下屏幕的任何部分时,它都会立即更改所有按钮。
如何让它在我按下时只改变每个按钮,而不是在我按下任何地方时改变一切?
这是我的 kv 文件:
Manager:
Principal:
<Principal>:
GridLayout:
cols: 3
Image:
id: '1'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '2'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '3'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '4'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '5'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '6'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '7'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '8'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
Image:
id: '9'
size: 30,30
source: 'button.png'
on_touch_down: self.source = 'button_press.png'
on_touch_up: self.source = 'button.png'
allow_strech: True
不要定义 on_touch_*
事件处理程序,而是在 ButtonBehavior
:
from kivy.uix.behaviors.button import ButtonBehavior
class ClickableImage(ButtonBehavior, Image):
def on_press(self):
pass
def on_release(self):
pass
现在,您可以在您的 kv 文件中使用它了。还有其他的行为,你可以去查看here.