我对Pygame不太熟悉,所以下面的内容完全基于我对其他事件处理程序的了解。在
事件处理程序通常的工作方式是,每个新事件执行一次函数。在这个处理过程中,它们不响应新事件。因为MOUSEBUTTONUP是一个新事件,所以需要单独处理。在
事件处理程序不能以当前设置代码的方式执行此操作,因为它一直在处理MOUSEBUTTONDOWN,冻结了窗口。在
现在,我假设在按下鼠标按钮时,鼠标按钮被抛出(中间有一定的间隔),或者有另一个事件这样做。如果是这样的话,您只需在每个事件中执行一次代码,而不必执行循环。在
否则,可以在某些变量为真时启动一个新线程来循环代码。然后可以在MOUSEBUTTONUP处理程序中将此变量设置为false。在
在事件处理程序之外定义:import thread
mouse_pressing = True
def mouse_pressing_func():
while mouse_pressing:
Do fancy stuff
然后在事件处理程序中使用:
^{pr2}$
编辑:
现在缩进已经修复了,我发现您还遇到了另一个问题:您甚至不检查循环中的事件是否是MOUSEBUTTONUP,而是在之后检查。这意味着你永远也达不到那种说法。在
Original: https://blog.csdn.net/weixin_30045091/article/details/113518794
Author: 陈昊芝
Title: python运行pygame时代码文件保存在哪_运行代码时Pygame窗口冻结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783660/
转载文章受原作者版权保护。转载请注明原作者出处!