gpt4 book ai didi

python - 如何删除 Tkinter Python 应用程序中的视频?

转载 作者:行者123 更新时间:2023-12-01 00:30:09 25 4
gpt4 key购买 nike

我创建了一个应用程序来通过 Tkinter 和 Python 显示视频。我可以在应用程序中播放、暂停视频,但现在的问题是我想从我的应用程序中删除视频。我尝试了很多解决方案,但无法删除。在我的应用程序中显示视频的代码:

def load_vid(path):
global stop
global frame_image
global vlabel
video = imageio.get_reader(path)
frame = 0
stop = Button(tab1, text="Stop",command=stop)
stop.place(x=350,y=370,anchor="e")
for image in video.iter_data():
frame += 1
image_frame = PIL.Image.fromarray(image)
image_frame.thumbnail((500,500))
try:
frame_image = ImageTk.PhotoImage(image_frame)
vlabel = Label(tab1,image=frame_image)
#vlabel.config(image=frame_image)
vlabel.image = frame_image
vlabel.place(x=50, y=210, anchor="w")
if stop == True:
break
except:
sys.exit()

删除视频的函数:

def stop():
global stop
stop = True
print('stop')
vlabel.config(image = "")

我想从应用程序的主框架中删除视频。对于图像,我可以使用 .config(image ="") 删除,但现在它不起作用。有什么解决办法吗?感谢您的帮助。

最佳答案

从表面上看,您正在视频的每一帧中创建一个新的标签

for image in video.iter_data():
...
try:
...
vlabel = Label(tab1,image=frame_image)
vlabel.place(x=50, y=210, anchor="w")
...
except:
...

在不知情的情况下,顶部会堆积数百个 Label,而您只需将最后创建的 Label 图像设置为 None

也许您应该首先在循环外部创建Label,并且仅在迭代期间修改图像:

def load_vid(path):
...
stop = Button(tab1, text="Stop",command=stop)
stop.place(x=350,y=370,anchor="e")
vlabel = Label(tab1)
vlabel.place(x=50, y=210, anchor="w")
for image in video.iter_data():
...
try:
frame_image = ImageTk.PhotoImage(image_frame)
vlabel.config(image=frame_image)
vlabel.image = frame_image
if stop == True:
break
except:
sys.exit()

关于python - 如何删除 Tkinter Python 应用程序中的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58250652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com