kivy python小部件实例或所有小部件

kivy python小部件实例或所有小部件,python,class,object,kivy,instance,Python,Class,Object,Kivy,Instance,请帮助我理解python中的类/实例。我想做几个按钮,并改变按钮的颜色,当它被点击。我不明白为什么on_touch_down会更改类的所有实例的颜色,而不是被触摸的实例的颜色。我很难找到答案,因为我不知道如何命名,我对物体没有太多的经验。请解释一下。非常感谢你 import kivy from kivy.app import App from kivy.uix.label import Label from kivy.uix.button import Button from kivy.uix.

请帮助我理解python中的类/实例。我想做几个按钮,并改变按钮的颜色,当它被点击。我不明白为什么on_touch_down会更改类的所有实例的颜色,而不是被触摸的实例的颜色。我很难找到答案,因为我不知道如何命名,我对物体没有太多的经验。请解释一下。非常感谢你

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()

您可能会认为,on\u touch\u down上的
只会影响您触摸的小部件。但它会影响该类的所有小部件。
因此,您可能想要的是,按下按钮上的
或释放按钮上的
,只影响小部件本身

类备忘录小部件(按钮):
def on_释放(自):
self.background_color=[100100,1,1]

我现在明白了,非常感谢你的回答。你很好。Kivy使用RGBA 0-1格式,即0%到100%的值
255
而不是直接使用0-255的值。好信息,谢谢!