, .
.
( gridlayouts).
, InstructionGroup, .
, , .
MyGrid set_attributes.
, , , Clock.schedule_once. .
, , Clock.schedule_interval, .
, :
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.graphics import Rectangle, Color, InstructionGroup
from kivy.clock import Clock
from random import uniform
XSIZE=2
YSIZE=2
class Cell(Widget):
def __init__(self, i, **kwargs):
super(Cell, self).__init__(**kwargs)
self.ig = InstructionGroup()
self.rect = Rectangle()
self.color = Color(0.2, 0.2, 0.2*i)
self.ig.add(self.color)
self.ig.add(self.rect)
class MyGrid(GridLayout):
def __init__(self,**kwargs):
super(MyGrid,self).__init__(**kwargs)
self.rows=YSIZE
self.cols=XSIZE
for i in xrange(4):
self.add_widget(Cell(i))
self.canvas.add(self.children[0].ig)
Clock.schedule_once(self.set_attributes)
Clock.schedule_interval(self.change_color,1)
def set_attributes(self,dt):
for i in self.children:
i.rect.pos = i.pos
i.rect.size = i.size
def change_color(self,dt):
for i in self.children:
i.color.rgb = (uniform(0.0,1.0),uniform(0.0,1.0),uniform(0.0,1.0))
class GameApp(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
GameApp().run()