在我发现的每个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中看到的那样,只需调用初始化并在保持打开的窗口上更新函数。我写这篇文章是把它写成一个外部库,我可以从任何项目中独立调用它。
有什么想法吗?谢谢!
编辑:根据要求在标准SDL中执行此操作的方法,this有效。只需调用init函数来设置屏幕,它将一直保持到关闭它为止。
答案 0 :(得分:0)
你错误地解释了这个例子 - 这是一个在主循环中设置的附加钩子(screen.c)。
SDL使用主循环方法来处理事件,更新窗口显示等。是的,有一种方法可以解决这个问题。创建自己的窗口并使用任何方法使其保持打开状态,通过SDL_SysWM *函数获取窗口句柄并更新窗口的显示缓冲区。
然而,这涉及一些胶水代码,并且还要求您自己进行窗口处理。