Skip to main content
 首页 » 编程设计

python之pygame.MOUSEBUTTONDOWN pygame.VIDEORESIZE 错误

2025年05月04日8zdz8207

几天前我发布了一个类似的问题,但我已经细化了这个问题: 当我在同一个事件循环中同时拥有 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() 

请您参考如下方法:

不要在每次事件时都更新屏幕,这会大大减慢您的程序。它在我的电脑上太慢了,我无法理解鼠标事件。只需移动几行代码即可解决此问题,并且运行良好。

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