Я получаю NameError от использования функции события из Pygame - PullRequest
0 голосов
/ 09 июля 2019

Я делаю симулятор электрической схемы, который графически основан на 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 голосов
/ 10 июля 2019

В вашем коде отсутствует то, что называется циклом событий, который определяет переменную события (что является причиной вашей ошибки).Его синтаксис таков:

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]

, которое проверяет, нажата ли левая кнопка мыши.(читайте об этом здесь ).

или поставив прямо перед проверкой, нажата ли мышь

event = pygame.event.wait()

, которая функционирует так же, как цикл обработки событий, за исключением того, чтопрограмма приостанавливается, если не происходит никаких событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...