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

如何在Tkinter的Frame或Label组件中显示屏幕录制内容

Tkinter展示录屏画面的实现方案

你现有的摄像头显示逻辑本身是通用的,只要调整视频帧的来源就可以适配录屏场景,以下是两种常用场景的实现方案:

场景1:播放本地已有的录屏视频文件

只需要把cv2.VideoCapture的参数从摄像头ID0替换为你的录屏文件绝对/相对路径即可,同时补充帧读取异常判断避免视频播放结束后报错:

from tkinter import Tk, Frame, Label
import cv2
from PIL import Image, ImageTk

root = Tk()
# Create a frame
app = Frame(root, bg="white")
app.grid()
# Create a label in the frame
lmain = Label(app)
lmain.grid()
# 替换为你的录屏文件路径,支持mp4/avi等常见视频格式
cap = cv2.VideoCapture("你的录屏文件路径.mp4")
def video_stream():
    ret, frame = cap.read()
    if not ret:
        # 可选配置:需要循环播放的话打开下一行注释,重置视频指针到开头
        # cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
        return
    cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
    img = Image.fromarray(cv2image)
    imgtk = ImageTk.PhotoImage(image=img)
    lmain.imgtk = imgtk
    lmain.configure(image=imgtk)
    # 30ms刷新一次对应约30帧,可自行调整,不要用1ms的间隔,会占用过高CPU
    lmain.after(30, video_stream)
root.after(30, video_stream)
root.mainloop()

场景2:实时展示当前屏幕的录制画面

OpenCV本身不支持直接采集屏幕画面,需要借助屏幕捕捉库实现,以下是基于pyautogui的实现方案:

  1. 先安装依赖:pip install pyautogui opencv-python pillow numpy
  2. 替换原有代码为以下内容:
from tkinter import Tk, Frame, Label
import cv2
import numpy as np
from PIL import Image, ImageTk
import pyautogui

root = Tk()
app = Frame(root, bg="white")
app.grid()
lmain = Label(app)
lmain.grid()

def video_stream():
    # 采集当前屏幕画面
    screen = pyautogui.screenshot()
    # 转换为OpenCV可处理的数组格式
    frame = np.array(screen)
    cv2image = cv2.cvtColor(frame, cv2.COLOR_RGB2RGBA)
    img = Image.fromarray(cv2image)
    imgtk = ImageTk.PhotoImage(image=img)
    lmain.imgtk = imgtk
    lmain.configure(image=imgtk)
    lmain.after(30, video_stream)

root.after(30, video_stream)
root.mainloop()

注意事项

  • 实时录屏场景如果觉得pyautogui性能不够,可以替换为mss库实现更高帧率的屏幕捕捉
  • 如果需要录制保存屏幕画面,可额外添加cv2.VideoWriter逻辑把帧写入本地文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:45:04