Pyqt GUI没有响应

pyqt gui没有响应

http://img3.mukewang.com/607534a30001da9809000628.jpg

我正在尝试为我的Linkedin刮板程序做一个GUI。但是一旦主程序开始执行,GUI便不会响应。在调用主要函数之前它的工作正常。桂码是


 class MainWindow(QMainWindow):

     def __init__(self):

         QMainWindow.__init__(self)


         self.setMinimumSize(QSize(720, 540))

         self.setWindowTitle("LinkedIn Scraper")


         self.nameLabel = QLabel(self)

         self.nameLabel.setText('Keywords:')

         self.keyword = QLineEdit(self)


         self.keyword.move(130, 90)

         self.keyword.resize(500, 32)

         self.nameLabel.move(70, 90)


         self.nameLabel = QLabel(self)

         self.nameLabel.setText('Sector:')

         self.sector = QLineEdit(self)


         self.sector.move(130, 180)

         self.sector.resize(500, 32)

         self.nameLabel.move(70, 180)


         self.btn = QPushButton('Download', self)

         self.btn.clicked.connect(self.doAction)

         self.btn.resize(200, 32)

         self.btn.move(270, 360)


         self.pbar = QProgressBar(self)

         self.pbar.setGeometry(110, 450, 550, 25)



     def doAction(self):

         print('Keyword: ' + self.keyword.text())

         print('Sector: ' + self.sector.text())

         main(self.keyword.text(),self.sector.text())

也想将该进度栏与main链接,我该怎么做?主要功能是一个很长的功能,具有许多子功能。所以我想将其链接到每个子功能


繁星coding
浏览 254回答 1
1回答

拉风的咖菲猫

GUI应用程序是围绕事件循环构建的:Qt坐在那里,接受来自用户的事件,并调用您的处理程序。您的处理程序必须尽快返回,因为Qt在您返回之前无法接受下一个事件。这就是GUI不响应的意思:事件只是排队,因为您没有让Qt对它们做任何事情。有几种解决方法,但是,特别是对于Qt,惯用的方法是启动后台线程来完成工作。您确实需要阅读有关Qt中的线程的教程。从快速搜索,这一个看起来不错的,尽管它是PyQt4的。但是您可能可以为PyQt5找到一个不错的选择。简短的版本是:class MainBackgroundThread(QThread):    def __init__(self, keyword, sector):        QThread.__init__(self)        self.keyword, self.sector = keyword, sector    def run(self):        main(self.keyword, self.sector)现在,您的doAction方法更改为: def doAction(self):     self.worker = MainBackgroundThread(self.keyword.text(), self.sector.text())     self.worker.start()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python