I'm making a simple audio downloader from video,but whenever i click download button gui stops until downloading has finished. I thought i can use threading for kind of these things but almost there are hundreds of method to achieve that,but i don't know which one i should choose and that's why I'm so confused then wanted to ask you.
My code here:
import sys
import threading
import pafy
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
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):
url = "https://www.youtube.com/watch?v=IcvruhYk0po"
video = pafy.new(url)
bestaudio = video.getbestaudio()
bestaudio.download()
if __name__ == '__main__':
app = QApplication([])
ex = App()
sys.exit(app.exec_())
Have changed the code a little and it works,thanks for everyone.
import sys
import threading
import pafy
from time import sleep
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):
threads = []
def __init__(self):
super().__init__()
self.title = 'YouDio'
self.left = 100
self.top = 100
self.width = 280
self.height = 90
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('DOWNLOAD', self)
button.move(10,25)
button.clicked.connect(self.on_click)
self.line = QLineEdit(self)
self.line.move(120,27)
self.show()
def on_click(self):
self.t = threading.Thread(target=self.threaded)
self.t.start()
def threaded(self):
url = self.line.text()
video = pafy.new(url)
bestaudio = video.getbestaudio()
bestaudio.download()
if __name__ == '__main__':
app = QApplication([])
ex = App()
sys.exit(app.exec_())