我从pygame使用事件函数得到了NameError

时间:2019-07-09 19:48:46

标签: python-3.x pygame

我正在使用Pygame制作基于图形的电路模拟器,而在使用“ event.type”时,出现“ NameError”

这是针对学校项目的。这是一些代码:

#Drawing Rectangles (later used as buttons)
batteryBtn = pygame.draw.rect(display, red, (0,0,100,50))
bulbBtn = pygame.draw.rect(display, green, (100,0,100,50))
resistorBtn = pygame.draw.rect(display, blue, (200,0,100,50))

#Initialising the images
img1 = pygame.image.load(r'C:\Users\Amine\Pictures\Battery.jpg')
img2 = pygame.image.load(r'C:\Users\Amine\Pictures\bulbOn.jpg')
img3 = pygame.image.load(r'C:\Users\Amine\Pictures\bulbOff.jpg')
img4 = pygame.image.load(r'C:\Users\Amine\Pictures\Resistor.jpg')

if event.type == pygame.MOUSEBUTTONDOWN:
    if event.button == 1:
        if batteryBtn.collidepoint(pos):
            display.blit(img1, (0, 100))

我希望程序允许我单击红色矩形,结果图像会弹出,但是我收到了以下错误:

Traceback (most recent call last):
  File "C:\Users\Amine\Desktop\ComputerScienceProject\Computer Science proj Pygame.py", line 25, in <module>
    if event.type == pygame.MOUSEBUTTONDOWN:
NameError: name 'event' is not defined

1 个答案:

答案 0 :(得分:0)

您的代码缺少的是称为事件循环的事件,该事件定义了事件变量(导致您出错的原因)。它的语法是这样的:

for event in pygame.event.get():
    #all of your events and such, in your case if event.type == pygame.MOUSEBUTTONDOWN:

您可以阅读docshere中的所有事件(有帮助的小指南)

解决这个问题的其他方法是使用

pygame.mouse.get_pressed()[0]

检查鼠标左键是否按下。 (了解here)。

或在检查鼠标是否单击之前先放上

event = pygame.event.wait()

与事件循环的功能相同,不同之处在于,如果没有事件发生,它将暂停程序。