我正在创建 GUI 来播放视频文件。问题是当我暂停视频时,播放按钮无法重新播放该视频,我必须再次选择视频文件。注意:因为我想在同一个 tkinter 窗口中显示视频,所以我不使用 OpenCV imshow 命令。相反,我使用“window.after”方法。以下是我的代码:我尝试使用“self.pause”变量来控制暂停状态。当我单击暂停按钮时,这个布尔变量变为 True。但是,当我再次单击“播放”按钮时,我找不到合适的位置将其设为 False。from tkinter import *from tkinter import messageboxfrom tkinter import filedialogimport PIL.Image, PIL.ImageTkimport cv2class videoGUI: def __init__(self, window, window_title): self.window = window self.window.title(window_title) top_frame = Frame(self.window) top_frame.pack(side=TOP, pady=5) bottom_frame = Frame(self.window) bottom_frame.pack(side=BOTTOM, pady=5) self.pause = False # Parameter that controls pause button self.canvas = Canvas(top_frame) self.canvas.pack() # Select Button self.btn_select=Button(bottom_frame, text="Select video file", width=15, command=self.open_file) self.btn_select.grid(row=0, column=0) # Play Button self.btn_play=Button(bottom_frame, text="Play", width=15, command=self.play_video) self.btn_play.grid(row=0, column=1) # Pause Button self.btn_pause=Button(bottom_frame, text="Pause", width=15, command=self.pause_video) self.btn_pause.grid(row=0, column=2) self.delay = 15 # ms self.window.mainloop() def open_file(self): self.pause = False self.filename = filedialog.askopenfilename(title="Select file", filetypes=(("MP4 files", "*.mp4"), ("WMV files", "*.wmv"), ("AVI files", "*.avi"))) print(self.filename)如果我在“play_video”函数中编写以下代码:self.pause = False暂停按钮不起作用。因为“window.after”方法会自动调用“play_video”函数并使“self.pause”为False。因此,暂停按钮将不起作用。
3 回答

繁星coding
TA贡献1797条经验 获得超4个赞
只需添加 play_video(self) 方法:
if self.pause == True:
self.pause = False
return
添加回答
举报
0/150
提交
取消