2017-04-25 2 views
1

클래스/인스턴스를 파이썬으로 이해하는 데 협조 해주십시오. 버튼 몇 개를 만들고 버튼을 클릭 할 때 버튼의 색상을 변경하고 싶습니다. 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 형식, 즉 0-255의 값을 0에서 100 %까지 사용하고 0-255의 값을 직접 사용하지 않습니다. – KeyWeeUsr

+0

좋은 정보, 감사합니다! –

답변

0

당신은 on_touch_down 만하면 터치 위젯 영향을 미친다는 것을 생각할 수 있습니다. 그러나 그것은 그 클래스의 모든 위젯에 영향을 미친다.
위젯 자체에만 영향을주는 것은 on_press 또는 on_release입니다.

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

나는 당신의 대답에 대해 지금은 이해하고 있습니다. –

+0

당신은 건강합니다. – EL3PHANTEN