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

如何将Python录屏代码整合到Tkinter GUI,解决窗口冻结无法停止问题

Tkinter 录屏功能整合解决方案

核心问题原因

  • 原始录屏函数使用while True死循环,直接绑定Tkinter按钮会阻塞GUI主线程,导致窗口无响应
  • 此前多线程方案未设置可控的停止标识,无法主动终止录屏循环,导致进程残留

完整整合代码

import cv2
import numpy as np
from PIL import ImageGrab
import threading
from tkinter import *

# 全局配置
screen_size = (1366, 768)
# 录屏状态标志位
is_recording = False
record_thread = None
output = None

def recorder():
    global is_recording, output
    fourcc = cv2.VideoWriter_fourcc(*"XVID")
    fps = 20.0
    output = cv2.VideoWriter("output.avi", fourcc, fps, (screen_size))
    # 用状态标志位替代死循环,支持主动停止
    while is_recording:
        img = ImageGrab.grab()
        img_np = np.array(img)
        frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
        output.write(frame)
    # 循环结束后释放资源
    output.release()
    cv2.destroyAllWindows()

def start_record():
    global is_recording, record_thread
    if not is_recording:
        is_recording = True
        # 录屏逻辑放到独立子线程执行,不阻塞GUI主线程
        record_thread = threading.Thread(target=recorder, daemon=True)
        record_thread.start()

def stop_record():
    global is_recording
    if is_recording:
        is_recording = False
        # 等待录屏线程正常结束,保证资源释放
        record_thread.join()

# 窗口关闭回调,避免进程残留
def on_closing():
    stop_record()
    window.destroy()

# GUI初始化
window = Tk()
window.geometry("500x200+460+170")
window.resizable(0, 0)
window.configure(bg='#030818')
window.protocol("WM_DELETE_WINDOW", on_closing)

Label(window, text="Recording", fg="white",bg="#030818",font=("Helvetica", 23, "bold")).pack()
Button(window, text="Start Recording", bd=0, bg="gray",fg="white",font=("Helvetica", 15, "bold"), command=start_record).place(x=170,y=60)
Button(window, text="Stop Recording", bd=0, bg="gray",fg="white",font=("Helvetica", 15, "bold"), command=stop_record).place(x=170,y=110)

window.mainloop()

功能说明

  • 点击Start Recording按钮启动录屏,GUI不会出现冻结情况
  • 点击Stop Recording按钮可主动终止录屏,视频自动保存为当前目录下的output.avi
  • 直接点击窗口关闭按钮也会自动停止录屏,不会残留后台进程

内容的提问来源于stack exchange,提问作者Shikhar Adhikari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:39:03