kivy python widget实例或所有小部件

时间:2017-04-25 22:01:51

标签: 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.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()

1 个答案:

答案 0 :(得分:0)

您可能认为on_touch_down仅影响您触摸的小部件。但它会影响该类的所有小部件。
因此,您可能希望on_presson_release仅影响小部件本身。

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