Я создаю простой графический интерфейс, включающий две кнопки.Первая кнопка предназначена для выбора видеофайла, а вторая кнопка получает путь к видеофайлу и затем воспроизводит его (используя 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()
Когда я выбираю видеофайл, его путь печатается.Но.когда я нажимаю кнопку воспроизведения, появляется сообщение об ошибке (выберите видеофайл).