pygame.MOUSEBUTTONDOWN pygame.VIDEORESIZE错误?
几天前我问过一个类似的问题,但这次我把问题说得更清楚了:当我在同一个事件循环中同时处理鼠标按下(MOUSEBUTTONDOWN)和窗口调整大小(VIDEORESIZE)时,它就不正常工作了……当我按下鼠标时,它还会打印出本来应该在鼠标抬起(MOUSEBUTTONUP)事件发生时才打印的内容……你们自己试试,这个问题让我很头疼。
import pygame
from pygame.locals import *
from sys import exit
LEFT = 1
size = 520,630
running = 1
screen = pygame.display.set_mode(size, RESIZABLE, 32)
#screen = pygame.display.set_mode((size))
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = 0
if event.type == pygame.VIDEORESIZE:
size = event.size
pygame.display.set_caption("Window resized to "+str(event.size))
if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
print "You pressed the left mouse button at (%d, %d)" % event.pos
if event.type == pygame.MOUSEBUTTONUP and event.button == LEFT:
print "You released the left mouse button at (%d, %d)" % event.pos
screen = pygame.display.set_mode(size, RESIZABLE, 32)
screen.fill((0, 0, 0))
pygame.display.flip()
1 个回答
0
不要在每个事件发生时都更新屏幕,这样会让你的程序变得非常慢。在我的电脑上,这样做让我根本无法理解鼠标事件。只需稍微调整一下你的代码,就能解决这个问题,程序就能正常运行了。
import pygame
from pygame.locals import *
from sys import exit
LEFT = 1
size = 520,630
running = 1
screen = pygame.display.set_mode(size, RESIZABLE, 32)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = 0
if event.type == pygame.VIDEORESIZE:
size = event.size
pygame.display.set_caption("Window resized to "+str(event.size))
screen.fill((0, 0, 0))
pygame.display.flip()
if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
print "You pressed the left mouse button at (%d, %d)" % event.pos
if event.type == pygame.MOUSEBUTTONUP and event.button == LEFT:
print "You released the left mouse button at (%d, %d)" % event.pos