0
我正在开发我的第一个应用程序,并且一直在关注如何使用tkinter和python设置工作GUI的一些教程。我的应用程序首先播放启动画面动画,一旦完成,切换到“UserSetup”框架。我仍然忙于尝试重新编码播放此视频的功能,以便我可以将其作为一种方法(或任何其他作品)进行调用。我想知道的是,如果在播放此视频的主题停止后有办法检查该视频吗?现在播放的任何其他动画都是同时运行的,我不想那样做。我基本上只想让它继续下一组动画,或者一旦闪屏动画停止了。如何检查线程是否以Python结尾
这是一个相当多的代码....
# ======================
# imports
# ======================
import tkinter as tk
import imageio
import threading
from PIL import Image, ImageTk
LARGE_FONT = ("Segoe UI", 18)
# =======================
# INITIALISATION - MAIN
# =======================
class MyApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side='top', fill='both', expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (SplashScreen, UserSetup, TimerSetup):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky='nsew')
self.show_frame(SplashScreen)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
# ======================
# PAGES
# ======================
""" To add new pages, just create a page class which inherits from tk.Frame,
add it to the dictionary, and add buttons for navigation """
class SplashScreen(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
video_name = "img//splash.avi" # This is your video file path
video = imageio.get_reader(video_name)
def stream(label):
for image in video.iter_data():
frame_image = ImageTk.PhotoImage(Image.fromarray(image))
label.config(image=frame_image)
label.image = frame_image
controller.show_frame(UserSetup)
def forget():
my_label.pack_forget()
my_label = tk.Label(self)
my_label.pack()
my_label.after(ms=15000, func=forget)
thread = threading.Thread(target=stream, args=(my_label,))
thread.daemon = 1
thread.setName("splash")
thread.start()
print(thread.getName())
class UserSetup(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
class TimerSetup(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
# ======================
# INITIALISATION (MAIN)
# ======================
app = MyApp()
#app.overrideredirect(True)
app.mainloop()
嗨卢克,thanx的提示!会给它一个去看看会发生什么:) – Ants
嗨卢克,试过你的建议,但现在它给了我各种其他奇怪的错误。认为这可能与我没有将流(标签)函数重新编写为类方法的事实有关。首先尝试这个,然后看看它是否工作 – Ants
你可以尝试'thread.join()',这会暂停当前的处理并等待已启动的线程完成。 – Joules