版本
[INFO ] [Kivy ] v1.9.1[INFO ] [Python ] v2.7.6 (default,Jun 22 2015,17:58:13)
码
from kivy.app import Appfrom kivy.core.window import Windowfrom kivy.uix.Widget import Widgetfrom kivy.uix.button import buttonfrom kivy.uix.grIDlayout import GrIDLayoutfrom kivy.uix.layout import Layoutfrom kivy.graphics import Rectangle,colorXSIZE=2YSIZE=2class Cell(Layout): def __init__(self,*args,**kwargs): super(Cell,self).__init__(*args,**kwargs) with self.canvas: Rectangle(size=self.size,pos=self.pos) color((0.2,0.2,1.0))class GameApp(App): def build(self): grID = GrIDLayout(rows=YSIZE,cols=XSIZE,size=Window.size) for i in xrange(4): print 'i={}'.format(i)# grID.add_Widget(Cell()) grID.add_Widget(button(text=str(i))) return grIDif __name__ == '__main__': GameApp().run()解决方法 我将展示一个如何实现这一目标的例子.
我将创建一个网格类,并将单元格小部件添加到它.
但我只会使用一个画布(grIDlayouts画布).
所以单元格类将包含一个 InstructionGroup,而不是制作多个画布.
为了能够在以后设置每个单元格的大小,位置和颜色,这些属性必须是单元格类的属性.
属性将在MyGrID的set_attributes方法中设置.
首先,当应用程序运行时,您可以获取单元格的位置,因此我使用Clock.schedule_once方法.这将执行下一帧.
为了演示如何更改颜色,我创建了一个Clock.schedule_interval,用随机颜色为单元格的颜色设置动画.
所以这是一个例子:
from kivy.app import Appfrom kivy.uix.Widget import Widgetfrom kivy.uix.button import buttonfrom kivy.uix.grIDlayout import GrIDLayoutfrom kivy.graphics import Rectangle,color,InstructionGroupfrom kivy.clock import Clockfrom random import uniformXSIZE=2YSIZE=2class Cell(Widget): def __init__(self,i,self).__init__(**kwargs) self.ig = InstructionGroup() self.rect = Rectangle() self.color = color(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))class GameApp(App): def build(self): return MyGrID()if __name__ == '__main__': GameApp().run()总结
以上是内存溢出为你收集整理的python – 小部件在GridLayout中的位置全部内容,希望文章能够帮你解决python – 小部件在GridLayout中的位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)