如何关闭在 e tkinter GUI 中的 Clip.preview 之后打开的 MoviePy 窗口?

问题描述 投票:0回答:1

我正在使用 Tkinter 开发一个 GUI 应用程序,用户可以单击按钮开始播放视频。我正在使用 MoviePy 确保视频和音频同步播放,但我面临的问题是视频在单独的窗口中打开。视频结束后该窗口不会关闭,这会阻止用户与主 GUI 交互。

这是我的代码的简化版本:

import tkinter as tk
from moviepy.editor import VideoFileClip

root = tk.Tk()
root.title()
root.attributes('-fullscreen', True)

# Function to play the video
def play_video():
    clip = VideoFileClip(video_path)  # Replace with your video path
    clip.preview()

play_button = tk.Button(root, text="Play", command=play_video)
play_button.pack(padx=50, pady=50)

root.mainloop()

当前问题:

  • 当用户单击“播放”按钮时,视频会以新的格式播放 窗户。该窗口在视频结束后保持打开状态,以防止 与主 GUI 进一步交互。

目标:

我想确保视频播放后,用户可以继续在 GUI 中工作。这可以通过以下方式之一来实现:

  • 直接在屏幕内播放视频(包括同步音频) Tkinter 主窗口。
  • 如果视频必须在单独的窗口中打开,请关闭该窗口 视频结束后自动。
  • 如果以上都不可行,请提供无缝过渡 返回主 GUI。

背景:

  • 我选择MoviePy来确保音频同步,正如我所经历的 过去其他库的问题(例如 tkVideoPlayer、pygame、bvPlayer)。
  • 我的实现是在Python 3.8中。

我感谢任何帮助或建议!

python tkinter moviepy
1个回答
0
投票

preview()
函数不包含更改此行为的参数。

但是,MoviePy 在内部使用 PyGame,因此一旦视频使用完 pygame.quit(),就可以

关闭
窗口:

import tkinter as tk
import pygame
from moviepy.editor import VideoFileClip

root = tk.Tk()
root.title()
root.attributes('-fullscreen', True)

# Function to play the video
def play_video():
    clip = VideoFileClip(video_path)  # Replace with your video path
    clip.preview()
    pygame.quit()

play_button = tk.Button(root, text="Play", command=play_video)
play_button.pack(padx=50, pady=50)

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.