2017-04-25 55 views
1

请帮助我理解python中的类/实例。我想制作几个按钮,并在点击按钮时更改按钮的颜色。我不明白为什么on_touch_down会改变所有类的实例的颜色,而不是被触及的那个。我很难找到答案,因为我不知道如何命名它,我没有太多的对象经验。请解释一下。谢谢你一百万。kivy python小部件实例或所有小部件

import kivy 
from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.button import Button 
from kivy.uix.widget import Widget 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput 
from kivy.graphics import Color, Ellipse 

class MemoWidget(Button): 
    def on_touch_down(self, touch): 
     self.background_color=[100,100,1,1] 

class MyApp(App): 
    def build(self): 
     root = BoxLayout(orientation='vertical',spacing=4) 
     m1 = MemoWidget() 
     m2 = MemoWidget() 
     m3 = MemoWidget() 
     root.add_widget(m1) 
     root.add_widget(m2) 
     root.add_widget(m3) 
     return root 

if __name__ == '__main__': 
MyApp().run() 
+0

Kivy使用RGBA 0-1格式,即值为255的0%至100%,而不是值0-255直接。 – KeyWeeUsr

+0

良好的信息,谢谢! –

回答

0

您可能认为on_touch_down只影响您触摸的小部件。但它会影响该类的所有小部件。
所以你可能想要的是on_presson_release,只会影响小部件本身。

class MemoWidget(Button): 
    def on_release(self): 
     self.background_color=[100,100,1,1] 
+0

我现在明白了,谢谢你的回答。 –

+0

你好。 – EL3PHANTEN