Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame绘制填充矩形覆盖边框,但只是有时?_Python_Pygame_Draw_Rect_Class Variables - Fatal编程技术网

Python pygame绘制填充矩形覆盖边框,但只是有时?

Python pygame绘制填充矩形覆盖边框,但只是有时?,python,pygame,draw,rect,class-variables,Python,Pygame,Draw,Rect,Class Variables,我的pygame程序中有一个类,它扩展了sprite,并有效地为矩形提供了碰撞之类的功能。该类的\uuuu init\uuuu如下所示: def __init__(self,topleft,size,label): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface(size) self.rect = self.image.get_rect() self.rect.topleft = to

我的pygame程序中有一个类,它扩展了sprite,并有效地为矩形提供了碰撞之类的功能。该类的
\uuuu init\uuuu
如下所示:

def __init__(self,topleft,size,label):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface(size)
    self.rect = self.image.get_rect()
    self.rect.topleft = topleft
    self.image.fill([128,128,128])
    pygame.draw.rect(self.image, [200,200,200], self.rect, 5)

这很有效。。。对于一个矩形。问题是,在该矩形之后,任何其他矩形都是设置为填充颜色(128128)的纯色矩形,而不是具有不同颜色(200200)边框的填充矩形。我希望这是类变量与实例变量之间的某种问题,但我不确定问题出在哪里。

好的,我已经解决了。draw函数中的Rect参数与图像的位置有关。因为我已经将它的rect设置为它在屏幕上的位置,所以它绘制的是从角偏移的矩形。它在我的第一个上起作用只是因为它恰好从[0,0]开始。以下是固定绘图代码:

pygame.draw.rect(self.image, [200,200,200],pygame.Rect([0,0],size), 5)

您正在将填充颜色显式设置为常量。。。为什么要使用不同的颜色?填充是恒定的,但矩形的边框是不同的恒定值。问题是,对于第一个以外的每个矩形,边框都设置为填充颜色,而不是它的预期值200200OK现在我明白了…如果使用
self.rect=pygame.rect(0,0,*size)
而不是
self.image.get\rect()
,您会遇到同样的问题吗?我所能想到的是,尽管矩形的左上角应该是0,0,但它被画在了错误的位置。(如果你将
topleft
参数应用于
self.rect
某个地方,那么可能函数正在将rect从
self.image
的原点拉开。)哦,对了,我忘了添加那一行,在填充曲面之前,我有self.rect.topleft=topleft。我将在OP中添加这一点。更改获取rect的方式也不会修复边界。我只是做了一个快速的实验,我去掉了填充,看起来第二个矩形根本没有被画出来。它有一个位置和一个矩形,因为我仍然可以和它碰撞,但它根本没有画边界。