簡體   English   中英

pyqt4 qthread使python崩潰

[英]pyqt4 qthread crashes python

這是我的代碼,是通過復制各種教程和SO帖子創建的:

import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import QObject, pyqtSignal, QThread

class Worker(QThread):
    def __init__(self):

        QThread.__init__(self)

class MainWindow(QWidget):

    def __init__(self):
        super().__init__()

        worker = Worker()
        worker.start()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())

這很簡單,但是當我運行它時,python立即崩潰。 我正在使用Anaconda3,我非常想知道python環境是否正確設置,但是我可能錯了。 我在Windows 10、64位,Anaconda3和Python 3.5(64位)上。 我使用conda安裝了qt4。

您的代碼崩潰是因為工作線程在運行時被破壞了。 發生這種情況是因為它是作為MainWindow的構造函數中的局部變量創建的。 __init__()完成並且worker超出范圍后,它會被Python的垃圾回收器刪除。 為了避免發生這種情況,您可以將worker分配為Mainwindow類的成員。

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.worker = Worker()
        self.worker.start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM