Python 不带结束循环的pySDL2显示器

Python 不带结束循环的pySDL2显示器,python,graphics,sdl,pysdl2,Python,Graphics,Sdl,Pysdl2,在我找到的每一个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,

在我找到的每一个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
#/usr/bin/env python
"""
代码被放入公共域
阿纳托利·泰克托尼克
"""
导入sdl2
将sdl2.ext作为库导入
lib.init()
窗口=lib.window(“”,大小=(300100))
window.show()
renderer=lib.renderer(窗口)
渲染器绘制点([10,10],库颜色(255255))
1.present()
####特别是这个循环####
运行=真
运行时:
对于lib.get_events()中的e:
如果e.type==sdl2.SDL_退出:
运行=错误
打破
如果e.type==sdl2.SDL_KEYDOWN:
如果e.key.keysym.sym==sdl2.SDLK\u转义:
运行=错误
打破
我见过的所有事件处理程序都被阻塞了。有没有一种方法,就像我在标准SDL中看到的那样,只需在保持打开的窗口上调用初始化和更新函数。我写这篇文章的目的是作为一个外部库,我可以独立于任何项目调用它

有什么想法吗?谢谢


编辑:根据在标准SDL中执行此操作的方法要求,工作正常。只需调用init函数设置屏幕,它将一直保持,直到您关闭它。

您误解了示例-这是要在主循环中设置的附加挂钩(screen.c)

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


但是,这需要一些粘合代码,还需要您自己进行窗口处理。

“就像我在标准SDL中看到的那样!”
您的意思是什么?你能告诉我们你所说的实际代码吗?见上面的编辑,Olevegard。