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

pyqt 问题,求助

  •  
  •   just1 · 2018-08-20 17:53:45 +08:00 · 1620 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境:windows Python 3.6.5 非常简单的一个 qt 应用,代码如下

    from PyQt5 import QtCore
    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(985, 635)
    
    class MyWindow(QMainWindow, Ui_MainWindow):
        def __init__(self, parent=None):
            super(MyWindow, self).__init__(parent)
            self.setupUi(self)
        def test(self,b):
            print(b)
    
    app = QApplication(sys.argv)
    myWin = MyWindow()
    
    
    class MyThead(QtCore.QThread):
        updated = QtCore.pyqtSignal(str)
    
        def __init__(self, msg):
            super().__init__()
            self.msg = msg
    
        def run(self):
            self.updated.emit(self.msg)
    
    
    
    
    #--------------后半部分
    _thread = MyThead('123')
    _thread.updated.connect(myWin.test)
    _thread.start()
    myWin.show()
    app.exec()
    

    运行起来没问题

    但是如果把后面几行

    _thread = MyThead('123')
    _thread.updated.connect(myWin.test)
    _thread.start()
    

    放到方法里面,也就是代码后半部分变成

    def _():
        _thread = MyThead('123')
        _thread.updated.connect(myWin.test)
        _thread.start()
    _()
    myWin.show()
    app.exec()
    

    gui 直接崩溃,也没有报错,只有一个因异常导致的 QThread: Destroyed while thread is still running

    这里折腾一天了才排查到这个地方,文档也没找到相关内容...

    3 条回复    2018-08-20 19:24:10 +08:00
    just1
        1
    just1  
    OP
       2018-08-20 18:24:26 +08:00
    0 回复惨案...
    zone53
        2
    zone53  
       2018-08-20 18:36:12 +08:00 via iPhone   ❤️ 1
    出了_()这个函数,线程对象不就释放了么。
    just1
        3
    just1  
    OP
       2018-08-20 19:24:10 +08:00
    @zone53 #2 感谢,就是这个原因
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2922 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:08 · PVG 08:08 · LAX 17:08 · JFK 20:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.