Python Youtube dl-执行后保持terminal/tkinter窗口打开

Python Youtube dl-执行后保持terminal/tkinter窗口打开,python,tkinter,youtube-dl,auto-close,Python,Tkinter,Youtube Dl,Auto Close,我正在使用tkinter和python def dl(lk,fl): # link / file location opts=['-o', fl+'/%(title)s-%(id)s.%(ext)s', '--playlist-end', '20', '--extract-audio', '--audio- format', 'mp3', '--audio-quality', '9', '--write-thumbnail', lk] youtube_dl.main(opts

我正在使用tkinter和python

def dl(lk,fl): # link / file location
    opts=['-o', fl+'/%(title)s-%(id)s.%(ext)s', '--playlist-end', '20', '--extract-audio', '--audio-   format', 'mp3', '--audio-quality', '9', '--write-thumbnail', lk]
    youtube_dl.main(opts)
    return "Successful download"
这是使用库的基本功能,没有什么特别之处

我从tkinter调用它,所以当我运行它时,下载开始并完成。之后,它关闭我的tkinter窗口

这里是调用tkinter类中第一个函数的函数

def dlv(self):
    self.url = self.iurl.get()
    if not self.url:
        self.msg = "Error : no url"
    elif not urlregex.match(self.url):
        self.msg = "Error : invalid url"
    else:
        self.msg = dl(self.url,filel)
    self.Com()
我试图停止调用一些函数作为输入或原始输入。 我还从youtube dl库中寻找选择

没有什么能奏效


谢谢

我不熟悉youtube\u dl。但是,我认为它会在最后调用
sys.exit
。请尝试

大概

import subprocess

def dl(lk, fl):
    opts = ['-o', fl + '/%(title)s-%(id)s.%(ext)s', '--playlist-end', '20',
            '--extract-audio', '--audio-   format', 'mp3', '--audio-quality',
            '9', '--write-thumbnail', lk]

    args = ['python', '-m', 'youtube_dl']
    args.extend(opts)

    p = subprocess.Popen(args) # You can use subprocess.PIPE to redirect stdout & stderr. Read the doc for more info.
    p.communicate() # Wait for process to terminate.

    if p.returncode == 0: # You might wanna check for correct successful return code.
        return 'Successful download'
    else:
        return 'Download Failed'

请注意,我没有测试此代码。这也将挂起tkinter主窗口。您可能希望在单独的线程/进程中调用此代码。

我对
youtube\u dl
一无所知,但如果不查看更多源代码,很难判断。您正在运行mainloop函数吗?如果不是的话,这就是它关闭的原因。。。