V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
angel725
V2EX  ›  问与答

给 Python 程序,用 pyqt5 加了 gui 但无响应

  •  
  •   angel725 · 2018-09-28 19:03:17 +08:00 · 2227 次点击
    这是一个创建于 2038 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前学 python 时写了个爬虫。就是捉些商品的标题,介绍,价格,还有买家评论。 今天想学学 pyqt5,于是想直接给这爬虫加个 gui 好了。

    运行后,主窗体无响应。 觉得可能是爬虫的问题,太耗时。

    于是在 pyqt5 里的按钮方法里,加了个进程。 当点按钮时,打开一个新进程执行爬虫。 爬虫虽然能正常运行,但 gui 还是会无响应。

    不明白这是怎么回事? 谢谢

    class MyWindow(QMainWindow, Ui_MainWindow): def init(self, parent=None): super(MyWindow, self).init(parent) self.setupUi(self) self.pushButton_2.clicked.connect(self.aa)

    def aa(self):
        p = Process(target=pa)
        p.start()
        p.join()
    

    if name == 'main': app = QApplication(sys.argv) m = MyWindow() m.show() sys.exit(app.exec_())

    3 条回复    2018-09-29 15:09:42 +08:00
    angel725
        1
    angel725  
    OP
       2018-09-28 19:04:03 +08:00
    class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
    super(MyWindow, self).__init__(parent)
    self.setupUi(self)
    self.pushButton_2.clicked.connect(self.aa)

    def aa(self):
    p = Process(target=pa)
    p.start()
    p.join()



    if __name__ == '__main__':
    app = QApplication(sys.argv)
    m = MyWindow()
    m.show()
    sys.exit(app.exec_())

    这样看清晰些
    minami
        2
    minami  
       2018-09-28 19:43:27 +08:00
    join 会阻塞呀,所以 GUI 还在等工作进程执行完( ╯□╰ )
    angel725
        3
    angel725  
    OP
       2018-09-29 15:09:42 +08:00
    还真是这样,去掉就好多了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5636 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 03:20 · PVG 11:20 · LAX 20:20 · JFK 23:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.