2014-04-01 2 views

답변

0

그리드 위젯을 만든 다음 예정된 기능으로 위젯의 색상을 변경하십시오. 아래의 코드는 완벽 할 수도 있지만 도움이 될 수도 있습니다.

from kivy.app import App 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.button import Button 
from kivy.graphics import Color 
from kivy.clock import Clock 
import random 


class RootWidget(GridLayout): 
    pass 

class MainApp(App): 

    def build(self): 
     parent = GridLayout(cols=6) 
     Colour=[0,0,0,0] 
     self.create_button(parent,Colour,1,1) 
     Clock.schedule_interval(lambda a:self.update(parent), 1) 
     return parent 

    def update(self,obj): 
     print "I am update function" 
     obj.clear_widgets() 
     print "random value is ",random.random() 
     for i in (1,2,3,4,5,6): 
      for j in (1,2,3,4,5,6): 
       c=[random.random(),random.random(),random.random(),random.random()] 
       d=[i,j] 
       self.create_button(obj,c,i,j) 

    def create_button(self,obj,color,i,j): 

     a=Button(background_color=color,text='Hello World %s%s'%(i,j)) 
     obj.add_widget(a) 




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

이렇게하면 모든 위젯이 지워지고 다시 생성되기 때문에 매우 비효율적입니다. 그것은 적절한 시각 효과를 주지만, 매번 버튼의'background_color'를 재설정하는 것이 훨씬 낫습니다. – inclement

+0

@inclement ... 네, 그게 더 효율적이 될거예요. obj.children에서 아이 인쇄 "나는 업데이트 기능" : C = [0, random.random(), 1, 임의 그것은 당신의 갱신 기능 데프 업데이트 (자기, OBJ)에서이 같은 루프를 할 것이다 .random() child.background_color = C –

+0

그 working.Thanks 많은. 글꼴 색상을 변경해야합니다. – Nibin

관련 문제