You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:39:18