我正在使用pafy模块下载youTube视频,当我单击“获取质量”按钮时,它可以在第一时间完美运行,但是当尝试获取其他视频的质量时,有时会重复该功能。
“获取质量”按钮将获取视频的名称和质量
如果我使用Terminate(),它将第二次无法使用...
我的整个代码和widget.ui在这里:https://pastebin.com/0kityt79
看看这些图片,您会明白我的意思。
我第一次单击“获取质量”
我第二次单击“获取质量”
df_replace2 = df.replace(to_replace = r"(\r)(?![A-Z])", value = "", regex=True)
df_replace3 = df_replace2.replace(to_replace = r"(\r)(?![a-z])", value = " ", regex=True)
答案 0 :(得分:0)
问题不在于QThread
部分,而是在于每次您单击按钮时,都在workers
和QYD
对象之间添加了信号插槽连接。只需在QYD.__init__
中创建您需要的所有连接,而不是QYD.getQuality
。另外,您不必启动线程,也不必每次按按钮都将工作程序移至线程,因此也可以将所有内容移至QYD.__init__
。因此,总而言之,QYD
应该类似于
class KYD(QWidget,myui):
urlSignal = pyqtSignal(str)
def __init__(self,parent=None):
super(QWidget,self).__init__(parent)
self.get_quality_btn.clicked.connect(self.getQuality_vdieos)
self.mythread=QThread()
self.worker=workers()
self.worker.moveToThread(self.mythread)
self.worker.info.connect(self.information)
self.worker.urlLink.connect(self.insertQulaity)
self.urlSignal.connect(self.worker.qualities)
self.mythread.start()
def getQuality_vdieos(self):
try:
url=self.Url.text()
self.urlSignal.emit(url)
except Exception as e:
print(str(e))