如何在Python游戏开发中同时执行两条代码语句?
如何同时执行代码并保持游戏窗口响应
你的代码里嵌套的while循环加time.sleep(1)会完全阻塞主线程,导致游戏窗口无法响应用户操作,也没法同时运行其他逻辑。要实现“同时执行两条语句”,可以根据你的GUI框架(看起来是tkinter)选择以下两种方案:
方案1:使用多线程分离监听逻辑
把监听signal的逻辑放到子线程,让主线程专注处理游戏窗口的事件循环:
from tetris_loader import tetris_loader as loader import threading def monitor_signal(signal_event): # 等待信号触发,替代轮询sleep signal_event.wait() loader.window.destroy() # 初始化线程安全的信号对象 signal_event = threading.Event() # 启动游戏窗口 loader() # 启动监听线程,设置为守护线程随主程序退出 signal_thread = threading.Thread(target=monitor_signal, args=(signal_event,), daemon=True) signal_thread.start() # 启动GUI主循环(如果loader内部没自动启动的话) loader.window.mainloop()
当需要触发关闭窗口的信号时,调用signal_event.set()即可,无需轮询。
方案2:利用GUI的定时事件(推荐tkinter场景)
如果你的游戏窗口基于tkinter,用after方法替代阻塞式的while和sleep,完全在主线程内实现非阻塞监听:
from tetris_loader import tetris_loader as loader def check_signal(): if signal: loader.window.destroy() else: # 每隔1000毫秒(1秒)检查一次信号状态 loader.window.after(1000, check_signal) # 启动游戏窗口 loader() # 启动定时检查 check_signal() # 启动GUI主循环 loader.window.mainloop()
这种方式不会阻塞主线程,游戏窗口能正常响应用户操作,同时定时检查信号状态。
内容的提问来源于stack exchange,提问作者Clammy Guy
相关产品推荐
相关产品推荐

