在python中同时应用两个或多个命令

在python中同时应用两个或多个命令,python,python-3.x,user-interface,tkinter,moviepy,Python,Python 3.x,User Interface,Tkinter,Moviepy,我创建了一个简单的程序,使用moviepy库将视频转换为音频,程序如下: import moviepy.editor as mp from tkinter import * from tkinter import ttk from tkinter.filedialog import asksaveasfile, askopenfile from tkinter.messagebox import showerror def Open(): video_path = askopenfil

我创建了一个简单的程序,使用moviepy库将视频转换为音频,程序如下:

import moviepy.editor as mp
from tkinter import *
from tkinter import ttk
from tkinter.filedialog import asksaveasfile, askopenfile
from tkinter.messagebox import showerror

def Open():
    video_path = askopenfile(initialdir = "Video", title = "Open Video", filetypes = (("Video", "*.MP4;*.AVI;*.WAV;*.MKV;*.webm;*.TS;*.ASF;*OOG"), ("All files", "*.*")))

    try:
        open(video_path.name, "r")
        ent_mp4.delete(0, END)
        ent_mp4.insert(0, video_path.name)
    except:
        pass

def save_in():
    if not(ent_mp4.get() == ""):
        saveas = asksaveasfile(initialdir = "Music", title = "Save in", filetype = [("Aduio", "*.MP3;*.FLAC;*.CD;*.WMV"), ("All filest", "*.*")])

        ent_mp3.delete(0, END)
        ent_mp3.insert(0, saveas.name)
    else:
        showerror("Error: Empty Entry", "Pleas Enter Your Video Path")

def convert():
    video = ent_mp4.get()
    music = ent_mp3.get()

    if not(music == ""):
        root.destroy()

        clip = mp.VideoFileClip(video)
        clip.audio.write_audiofile(music)

        main()
    else:
        showerror("Error: Empty Entry", "Pleas Enter Your Music Path")

ent_mp4, ent_mp3, root = None, None, None
bu1, bu2, bu3 = None, None, None
def main():
    global ent_mp3, ent_mp4, root, bu1, bu2, bu3, sv
    root = Tk()
    root.title("Convert Video to Audio")

    ent_mp4 = ttk.Entry(root, width = 50)
    ent_mp4.grid(row = 0, column = 0)

    ent_mp3 = ttk.Entry(root, width = 50)
    ent_mp3.grid(row = 1, column = 0)

    ttk.Button(root, text = "Open video", command = lambda: Open()).grid(row = 0, column = 1)

    ttk.Button(root, text = "Save in", command = lambda: save_in()).grid(row = 1, column = 1)

    f = ttk.Frame(root)
    f.grid(row = 2, column = 0, columnspan = 2)

    ttk.Button(f, text = "Convert", command = lambda: convert()).pack(side = LEFT)

    ttk.Button(f, text = "Exit", command = lambda: exit()).pack(side = RIGHT)

    root.mainloop()


main()
程序成功了,但我只想添加一些简单的内容,即在
root.destroy()
切换进程运行时,不删除窗口,而是添加一个动画GIF,指示进程正在进行

我怀疑解决办法是同时应用两种方法,以使过程成功

但是我没有找到如何尝试使用“with”命令,但是没有成功


那么解决方案是什么呢?

线程将允许两个或多个函数同时运行

from threading import Thread

def func1():
    print('Working')

def func2():
    print('Working')

if __name__ == '__main__':
    Thread(target = func1).start()
    Thread(target = func2).start()

您可能希望以异步方式运行其中一个命令