我试着通过www.example.com()在光标后面画一个圆pygame.draw.circle。但是,当我运行下面的代码时,我只能看到一个黑屏的窗口,光标后面什么也没有。
import pygame
from pygame.locals import *
# initialize pygame
pygame.init()
# set up the display
flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.OPENGL
resolution = (800, 600)
win = pygame.display.set_mode(resolution, flags)
# pygame event loop
while True:
for event in pygame.event.get():
if not event == None: # do not print anything if there is no action taking place
print(event)
if event.type == QUIT: # quit the program
pygame.quit()
if event.type == MOUSEMOTION:
pygame.draw.circle(win, (255, 0, 0), event.pos, 5)
if event.type == KEYDOWN:
print(event.key, event.mod, pygame.key.name(event.key))
pygame.display.flip()
有人能解释一下是什么问题吗?让pygame.draw.circle()函数按照它应该的方式工作。非常感谢。
1条答案
按热度按时间km0tfn4u1#
必须在应用程序循环中绘制圆。在事件循环中设置位置,但在应用程序循环中在该位置绘制圆。事件循环仅在事件发生时执行,因此在那里绘制的所有内容仅在该时刻绘制。应用程序循环连续执行,并且每次通过对应于一个帧。通常,场景在每个帧中被重绘。这意味着必须在每一帧中清除显示,必须绘制场景,最后必须更新显示。
不幸的是,这并不能解决您的问题,因为您不能将Pygame的
draw
模块与OpenGL窗口一起使用。你需要创建一个默认的(没有OpenGL)窗口(或者你需要用OpenGL API绘制所有内容)。工作示例: