我正在使用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
答案 0 :(得分:0)
您的代码缺少的是称为事件循环的事件,该事件定义了事件变量(导致您出错的原因)。它的语法是这样的:
for event in pygame.event.get():
#all of your events and such, in your case if event.type == pygame.MOUSEBUTTONDOWN:
解决这个问题的其他方法是使用
pygame.mouse.get_pressed()[0]
检查鼠标左键是否按下。 (了解here)。
或在检查鼠标是否单击之前先放上
event = pygame.event.wait()
与事件循环的功能相同,不同之处在于,如果没有事件发生,它将暂停程序。