下面有一些简单的代码,它们只是创建一些具有指定颜色的矩形,然后将它们存储到FloatLayout中。由于某种原因,我创建的第一个矩形“砖”没有得到颜色,但随后的所有矩形都得到了颜色。我的游戏也有问题,当另一个小部件与砖块碰撞时,它会更新砖块左侧的属性,而不是其自身。我认为这两个问题是相关的。
正在添加到FloatLayout的第一个Brick实例(brick1)发生了什么事,它没有创建颜色?
import kivy
kivy.require('1.10.0')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.properties import NumericProperty, ReferenceListProperty
from kivy.clock import Clock
from kivy.graphics import Rectangle, Ellipse, Color
from kivy.uix.floatlayout import FloatLayout
from kivy.vector import Vector
from kivy.utils import get_color_from_hex
import random
from kivy.config import Config
Window.size = (300,600)
class Brick(Widget):
def __init__(self, xloc, yloc, **kwargs):
super().__init__(**kwargs)
with self.canvas:
self.size = (25,25)
self.x = xloc
self.y = yloc
self.pos = (self.x,self.y)
self.body = Rectangle(pos=self.pos,size = self.size)
self.c = Color(1,0,1)
class Game(Widget):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.brick_container = FloatLayout(size = (25,25))
brick1 = Brick(50,100)
brick2 = Brick(100,100)
self.brick_container.add_widget(brick1)
self.brick_container.add_widget(brick2)
self.add_widget(self.brick_container)
def update(self,dt):
self.name = 'nothing'
class MyApp(App):
def build(self):
game = Game()
Clock.schedule_interval(game.update, 1.0/60.0)
return game
if __name__ == '__main__':
MyApp().run()
答案 0 :(得分:1)
您必须先设置颜色,然后再设置矩形
class Brick(Widget):
def __init__(self, xloc, yloc, **kwargs):
super().__init__(**kwargs)
self.size = (25,25)
self.pos = (xloc , yloc)
with self.canvas:
self.c = Color(1,0,1)
self.body = Rectangle(pos=self.pos,size = self.size)
使用绘图说明时,请按照docs使用上面设置的颜色。
绘图说明
绘图说明非常简单 像画一条线或一条多边形,更复杂的像 网格或贝塞尔曲线:
with self.canvas: # draw a line using the default color Line(points=(x1, y1, x2, y2, x3, y3)) # lets draw a semi-transparent red square Color(1, 0, 0, .5, mode='rgba') Rectangle(pos=self.pos, size=self.size)
因此,在您的原始代码中,第一个Brick默认使用颜色(白色),而其他的则使用正确的颜色。