pyqt 내부에서 selenium을 실행하면 gui는 먹통이 된다. 움직이지를 않고 프로그램이 중단된것처럼 보인다. 이를 threading을 이용하여 해결할 수 있다.
from PyQt5.QtCore import QCoreApplication, QThread, QObject, pyqtSignal
class Worker():
progress = pyqtSignal(int)
finished = pyqtSignal()
def run(self):
self.progress.emit(10) #def progress_emited에 10을 넘겨줌
selenium_run() #selenium 실행
self.finished.emit() #스레드 종료
class WindowClass(QMainWindow, Ui_MainWindow):
''''''''''''''''''
def work(self):
self.thread = QThread()
self.worker = Worker()
self.worker.moveToThread(self.thread)
self.thread.started.connect(self.worker.run)
self.worker.finished.connect(self.thread.quit)
self.worker.finished.connect(self.worker.deleteLater)
self.thread.finished.connect(self.thread.deleteLater)
self.worker.progress.connect(self.progress_emited)
def progress_emited(self, no):
self.progressBar.setValue(no)