我使用 Python 3.5 中的 SDL2,我有 2 个线程,每个线程都绘制到自己的 OpenGL 窗口。
绘图顺利,所有鼠标和键盘事件都到达正确的线程。只有当我调整其中一个窗口的大小时,resize 事件才会转到错误的窗口。
这是我的代码的一部分:
def pollEvent (self):
event = s2.SDL_Event ()
if s2.SDL_PollEvent (ct.byref (event)):
if event.type == s2.SDL_QUIT:
self.running = False
elif event.type == s2.SDL_WINDOWEVENT:
if event.window.event == s2.SDL_WINDOWEVENT_RESIZED:
print (111, self.name, 222)
self.event = resizeEvent
self.width = event.window.data1
self.height = event.window.data2
self.reshape ()
elif event.window.event == s2.SDL_WINDOWEVENT_CLOSE:
self.running = False
self.renderDisplayList ()
elif event.type == s2.SDL_MOUSEBUTTONDOWN:
print (222, self.name, 333)
SDL_MOUSEBUTTONDOWN 转到正确的窗口,打印正确的名称,但 SDL_WINDOWEVENT_RESIZED 转到错误的窗口,打印错误的名称。
有谁知道是什么原因造成的?每个 SDL 窗口只能从其自己的线程访问。