[英]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.