1
그리드 레이아웃에서 위젯의 색상을 동적으로 변경하고 싶습니다.
어떻게 할 수 있습니까? 6x6 위젯 행렬을 만들고 그리드 레이아웃의 타일을 동적으로 깜박이게해야합니다.키 그리드에서 위젯의 색상을 동적으로 변경하고 싶습니다.
그리드 레이아웃에서 위젯의 색상을 동적으로 변경하고 싶습니다.
어떻게 할 수 있습니까? 6x6 위젯 행렬을 만들고 그리드 레이아웃의 타일을 동적으로 깜박이게해야합니다.키 그리드에서 위젯의 색상을 동적으로 변경하고 싶습니다.
그리드 위젯을 만든 다음 예정된 기능으로 위젯의 색상을 변경하십시오. 아래의 코드는 완벽 할 수도 있지만 도움이 될 수도 있습니다.
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()
이렇게하면 모든 위젯이 지워지고 다시 생성되기 때문에 매우 비효율적입니다. 그것은 적절한 시각 효과를 주지만, 매번 버튼의'background_color'를 재설정하는 것이 훨씬 낫습니다. – inclement
@inclement ... 네, 그게 더 효율적이 될거예요. obj.children에서 아이 인쇄 "나는 업데이트 기능" : C = [0, random.random(), 1, 임의 그것은 당신의 갱신 기능 데프 업데이트 (자기, OBJ)에서이 같은 루프를 할 것이다 .random() child.background_color = C –
그 working.Thanks 많은. 글꼴 색상을 변경해야합니다. – Nibin