它说“模块”对象在我尝试使用event.type

时间:2018-08-07 07:55:52

标签: python python-3.x pygame

当我尝试使用event.type时,它说了这一点。我以前没有使用过事件模块,但是在我的书中说它应该可以工作。我在Google和堆栈溢出时进行了查找,但没有找到类似的内容(我将Javascript用于代码段,因为我不知道如何将代码转换为python。)

import pygame
from pygame import *
pygame.init()
pygame.event.get()
black = (0,0,0)
white = (255,255,255)
playercoords_a = (275,425)
playercoords_b = (275,475)
playercoords_c = (225,475)
playercoords_d = (225,425)
playertotalcoords = (playercoords_a, playercoords_b, playercoords_c, playercoords_d)
windowSurface = pygame.display.set_mode((500, 500),0,32)
windowSurface.fill(black)
xmod = 0
ymod = 0
pygame.draw.polygon(windowSurface,white,((275,425),(275,475),(225,475),(225,425)))
pygame.display.update()
while True:
    if event == KEYDOWN:
        if event.key == K_LEFT:
            print('it works')
        windowSurface.fill((black,))
        pygame.draw.polygon(windowSurface,white,((275 + xmod,425 + ymod),(275 + xmod,475 + ymod),(225 + xmod,475 + ymod),(225 + xmod,425 + ymod)))
        pygame.display.update()
  

第19行,在
     如果event.type == KEYDOWN:
  AttributeError:“模块”对象没有属性“类型”

1 个答案:

答案 0 :(得分:2)

在pygame中,您通常有一个for循环用于事件处理,在您的情况下,它应如下所示:

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                print('it works')
...

在这种情况下,event是从pygame.event.get()返回的事件对象,而不是模块。


您要做的是使用event将pygame的from pygame import *模块导入全局名称空间。因此,当您运行

while True:
    if event == KEYDOWN:

event实际上就是这个模块,而不是实际事件对象。

从不from pygame import *