我使用了一个单独的线程来调用pygame.event.get()
在 Ubuntu 上使用了很长时间没有任何问题。然而MacOS抛出异常'NSInternalInconsistencyException', reason: 'nextEventMatchingMask should only be called from the Main Thread!'
; Windows 报告该窗口是(Not answering)
正常执行几秒钟后,我认为这有相同的解释,这意味着 Linux 与其他操作系统不同,能够容忍这种软件设计。
是否有任何解决方法可以在单独的线程中继续清空事件队列,或者这基本上意味着 python 2.7 上的 pygame 1.9.1 根本无法以这种方式工作?
我知道 GUI 事件通常在主线程中处理,但我的 Python 库旨在与 ipython 一起使用。根据设计,主线程(即用户的 ipython 单元)可能不执行任何操作或 CPU 贪婪循环,因此它无法处理pygame.event.get()
.
只能从其他线程发布事件,但事件队列必须在主线程中处理。请参阅文档pygame.event https://www.pygame.org/docs/ref/event.html:
[...] 事件子系统应该从主线程调用。 [...]
但是,如果您继续阅读
[...]如果您想从其他线程将事件发布到队列中,请使用pygame.fasteventpygame
用于与事件和队列交互的模块。 [...]
See pygame.fastevent https://www.pygame.org/docs/ref/fastevent.html#module-pygame.fastevent module:
pygame.fastevent
是鲍勃·彭德尔顿的包装纸快速事件图书馆。它提供了在多线程环境中使用的快速事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)