2016-08-21 3 views
0

Ich möchte ein Android-Lock-ähnliches Ding machen, so habe ich 2 Bilder des Knopfes (der Knopf normal, der die Taste gedrückt).Python-Kivy: on_touch_down() definiert für bestimmte Kinder Auswirkungen auf alle Kinder

Ich habe eine Funktion on_touch_down für jedes Bild definiert, also wenn ich es drücke, ändert sich die Quelle zu der gedrückten Taste, und on_touch_up ändert es wieder auf normal. Aber jedes Mal, wenn ich auf einen Teil des Bildschirms drücke, werden alle Schaltflächen gleichzeitig geändert.

Wie kann ich es ändern nur jede Taste, wenn ich es drücke, und nicht alles ändern, wenn ich irgendwo drücke?

hier ist meine kv-Datei:

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 

Antwort

0

Statt on_touch_* Ereignishandler zu definieren, eine anklickbare Bildklasse mit Hilfe des ButtonBehavior definieren:

from kivy.uix.behaviors.button import ButtonBehavior 

class ClickableImage(ButtonBehavior, Image): 

    def on_press(self): 
     pass 

    def on_release(self): 
     pass 

Jetzt können Sie es in Ihrer verwenden KV-Datei. Es gibt andere Verhaltensweisen, Sie können sie überprüfen here.

+0

Das löste mein Problem! Vielen Dank – gramsch