我正在使用pygame通过一些不同的图形绘制算法绘制图形。以前,我的大小是固定的,但现在我希望它的大小可以调整。在某些情况下,我能够调整大小以进行工作。例如,当我按下客户端顶部的“调整大小”窗口按钮并正确填充表面时,它就可以工作。但是,如果我尝试通过拖动角点来调整窗口大小,则必须非常缓慢地进行操作,否则它将无法工作。有没有一种方法可以让我拖动pygame更快地更新。我看过其他示例,但无法使其适用于我的情况,也许是因为我也在使用thorpy吗? 主循环事件代码为:
playing_game=True
clock = pygame.time.Clock()
while playing_game:
pygame.event.pump()
event=pygame.event.wait()
if event.type == QUIT:
playing_game = False
pygame.display.quit()
break
elif event.type == VIDEORESIZE:
myMenu.display = pygame.display.set_mode(event.dict['size'], HWSURFACE|DOUBLEBUF|RESIZABLE)
myMenu.resize(200, event.dict['h'], event.dict['w'], event.dict['h'])
myMenu.itemMenu.blit_and_update()
pygame.display.update()
clock.tick(60)
myMenu.itemMenu.react(event)
完整代码可在以下位置找到:https://github.com/CamiloJac/GraphVis
在按下调整大小窗口按钮时可以正常工作
当我拖动屏幕边缘时工作不正常
答案 0 :(得分:0)
我怀疑pygame.event.pump()
和event=pygame.event.wait()
的组合导致事件丢失。
event.wait()
仅处理一个单个事件,然后pump()
告诉PyGame处理其余事件。我猜正在发生某种形式的混淆,并且调整大小丢失了。
我可以通过调整大小来处理所有事件:
SURFACE = pygame.HWSURFACE|pygame.DOUBLEBUF|pygame.RESIZABLE
...
while ( not done ):
# Handle user-input
for event in pygame.event.get():
if ( event.type == pygame.QUIT ):
done = True
elif ( event.type == pygame.VIDEORESIZE ):
WINDOW_WIDTH = event.w
WINDOW_HEIGHT = event.h
window = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ), SURFACE )