【发布时间】:2019-06-22 05:28:36
【问题描述】:
我正在创建一个包含两个按钮的简单 GUI。 第一个按钮用于选择视频文件,第二个按钮获取视频文件路径然后播放(使用 OpenCV)。
问题是我无法从第一个按钮绑定函数返回文件路径并将其传递给第二个按钮绑定函数。
我将“文件名”定义为全局变量,但“文件名”仍未在“PlayVideo()”函数中定义。
以下是我的代码:
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
global filename
def OpenFile():
filename = filedialog.askopenfilename(title = "Select file",filetypes = ( ("MP4 files","*.mp4"), ("WMV files","*.wmv"), ("AVI files","*.avi") ))
print(filename)
def PlayVideo():
try:
import cv2
cap = cv2.VideoCapture(filename)
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
except:
messagebox.showinfo(title='Video file not found', message='Please select a video file.')
root = Tk()
selectButton = Button(root, text = 'Select video file', command=OpenFile)
playButton = Button(root, text = 'Play', command=PlayVideo)
selectButton.grid(row=0)
playButton.grid(row=1)
root.mainloop()
当我选择一个视频文件时,它的路径会被打印出来。但。当我点击播放按钮时,会显示错误信息(请选择一个视频文件)。
【问题讨论】:
标签: python tkinter command return-value video-capture