1 回答

TA贡献1816条经验 获得超4个赞
from threading import Thread
import sys
import threading
import pafy
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
def download_me():
url = "https://www.youtube.com/watch?v=IcvruhYk0po"
video = pafy.new(url)
bestaudio = video.getbestaudio()
bestaudio.download()
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button - pythonspot.com'
self.left = 100
self.top = 100
self.width = 320
self.height = 200
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('Coffee shop radio', self)
button.move(10,10)
button.clicked.connect(self.on_click)
self.show()
def on_click(self):
t = Thread(target=download_me)
t.daemon = True
t.start()
if __name__ == '__main__':
app = QApplication([])
ex = App()
sys.exit(app.exec_())
尝试这个!
实际上下载任务是同步完成的,所以你的ardard会阻塞直到下载任务结束……你必须把这部分代码放在一个守护线程中。
注意:我不知道 python 线程是否可以与 Qt 混合,所以你应该使用好的 Lib 但想法保持不变
添加回答
举报