【问题标题】:Pygame resizable window, surface not updating appropriatelyPygame可调整大小的窗口,表面没有适当更新
【发布时间】:2019-11-18 23:42:42
【问题描述】:

我正在使用 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

按下调整窗口大小按钮时正常工作

拖动屏幕边缘时工作不正常

【问题讨论】:

    标签: pygame


    【解决方案1】:

    我怀疑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 )
    

    【讨论】:

    • 我之前尝试过使用事件循环,但不幸的是我遇到了同样的问题。
    • 这是 Ubuntu 特有的,因为我在 Windows 机器上尝试过,并且调整大小正常。
    • @Camilo - 我相信你,但这在 Ubuntu 18.04 和 19.10 上对我有用。
    • 嗯,好吧,我会试着弄乱它。很高兴知道它适用于 Ubuntu。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多