pySDL2显示不带结束循环

2024-10-06 12:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在我发现的每一个pySLD2示例中,我都看到代码末尾有一个循环,用于在关闭窗口之前保持窗口打开。例如:

#!/usr/bin/env python
"""
The code is placed into public domain
by anatoly techtonik <techtonik@gmail.com>
"""
import sdl2
import sdl2.ext as lib

lib.init()

window = lib.Window('', size=(300, 100))
window.show()

renderer = lib.Renderer(window)
renderer.draw_point([10,10], lib.Color(255,255,255))
renderer.present()

####Specifically this loop####
running = True
while running:
  for e in lib.get_events():
    if e.type == sdl2.SDL_QUIT:
      running = False
      break
    if e.type == sdl2.SDL_KEYDOWN:
      if e.key.keysym.sym == sdl2.SDLK_ESCAPE:
        running = False
        break

我见过的所有事件处理程序都被阻塞了。只需打开一个标准的函数更新窗口。我写这写作为一个外部库,我可以调用独立于任何项目。在

有什么想法吗?谢谢!在

编辑:根据在标准SDL中对实现这一点的方法的请求,this起作用。只需调用init函数来设置屏幕,它将一直保持到您关闭它为止。在


Tags: importfalse标准ifinitlibtypewindow
1条回答
网友
1楼 · 发布于 2024-10-06 12:13:48

你误解了这个例子-这是一个附加的钩子(screen.c)要在主循环中设置。在

SDL使用主循环方法来处理事件、更新窗口显示等。是的,有一种方法可以解决这个问题。创建自己的窗口并使用任何方法使其保持打开状态,通过SDL_SysWM*函数获取窗口句柄并更新窗口的显示缓冲区。在

不过,这涉及一些粘合代码,还需要您自己处理窗口。在

相关问题 更多 >