Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 - Fatal编程技术网

Python 当我按下一个按钮时,有两个按钮被按下,pygame

Python 当我按下一个按钮时,有两个按钮被按下,pygame,python,pygame,Python,Pygame,当我按下一个按钮时,有两个按钮被按下。 我制作的图像就像一个按钮,但当我按下第一个按钮时,第二个按钮也被按下。 我是pygame的新手,尝试在单击每个按钮时让按钮做不同的事情 导入pygame 导入时间 pygame.init(); screen=pygame.display.set_模式((340340340)); img=pygame.image.load('3.gif') iimg=pygame.image.load('2.gif') mg=pygame.image.load('4.gif

当我按下一个按钮时,有两个按钮被按下。 我制作的图像就像一个按钮,但当我按下第一个按钮时,第二个按钮也被按下。 我是pygame的新手,尝试在单击每个按钮时让按钮做不同的事情

导入pygame
导入时间
pygame.init();
screen=pygame.display.set_模式((340340340));
img=pygame.image.load('3.gif')
iimg=pygame.image.load('2.gif')
mg=pygame.image.load('4.gif').convert()
g=pygame.image.load('5.gif')
waitingForInput=False
pygame.display.set_标题(“西蒙”);
BEEP1=pygame.mixer.Sound('BEEP1.wav'))
BEEP2=pygame.mixer.Sound('BEEP2.wav'))
BEEP3=pygame.mixer.Sound('BEEP3.wav'))
BEEP4=pygame.mixer.Sound('BEEP4.wav'))
屏幕blit(img,(0,0))
筛网布氏硬度(mg,(150,0))
pygame.display.flip()
def main():
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
返回错误
如果event.type==pygame.MOUSEBUTTONDOWN:
鼠标位置=event.pos
如果img.get_rect().collidepoint(鼠标位置):
打印('按钮在{0}处按下。'格式(鼠标位置))
BEEP1.播放()
屏幕光点(iimg,(0,0))
pygame.display.flip()
时间。睡眠(.30)
屏幕blit(img,(0,0))
pygame.display.flip()
如果mg.get_rect().collidepoint(鼠标位置):
打印('按钮在{0}处按下。'格式(鼠标位置))
BEEP2.播放()
屏幕光点(g,(150,0))
pygame.display.flip()
时间。睡眠(.30)
筛网布氏硬度(mg,(150,0))
pygame.display.flip()
main()

如果在
曲面上调用
get_rect
,则返回的结果
rect
将始终具有
x
y
0

因此,当您在事件循环中运行
if img.get_rect().collidepoint(mouse_pos)
时,您不会检查
曲面是否被单击。检查鼠标位置是否在屏幕的左上角

也许可以使用一些
打印
语句来检查自己

您可以做的是为主循环外的每个按钮创建一个
Rect
,然后使用这些Rect进行blitting:

...
img = pygame.image.load('3.gif')
img_rect = img.get_rect()
...
mg = pygame.image.load('4.gif').convert()
mg_rect = img.get_rect(topleft=(150,0))
...
while True:
   ...
        if event.type == pygame.MOUSEBUTTONDOWN:
            mouse_pos = event.pos

            if img_rect().collidepoint(mouse_pos):
                BEEP1.play()

            if mg_rect ().collidepoint(mouse_pos):
                BEEP2.play()

    screen.blit(img, img_rect)
    screen.blit(mg, mg_rect)
请注意,您还应该避免在主循环中调用
time.sleep
或多次调用
pygame.display.flip()


另一个解决方案是使用pygame的
Sprite
类,它允许您将
曲面
矩形

组合在一起。另一个注意事项是:您可能希望在个人资料中将苹果的
软件编程程序更改为苹果的
软件编程程序