PyQt5 QThread Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

Demosthenes Koptsis demosthenesk at gmail.com
Wed Jun 30 12:37:05 BST 2021


Sorry for the bad email with code i sent previously !

i have a GUI with PyQt5. The GUI has a Form, 2 Buttons and a 
ProgressBar. I want to implement a start/wait thread with QThread. 
Unfortunately i get Process finished with exit code 139 (interrupted by 
signal 11: SIGSEGV) when i click Start button to run thread.

MainWindow.py

-------------------------------------------
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'MainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
     def setupUi(self, Form):
         Form.setObjectName("Form")
         Form.resize(400, 138)
         self.btnRun = QtWidgets.QPushButton(Form)
         self.btnRun.setGeometry(QtCore.QRect(20, 20, 89, 25))
         self.btnRun.setObjectName("btnRun")
         self.btnStop = QtWidgets.QPushButton(Form)
         self.btnStop.setGeometry(QtCore.QRect(20, 60, 89, 25))
         self.btnStop.setObjectName("btnStop")
         self.progressBar = QtWidgets.QProgressBar(Form)
         self.progressBar.setGeometry(QtCore.QRect(20, 100, 371, 23))
         self.progressBar.setProperty("value", 24)
         self.progressBar.setObjectName("progressBar")

         self.retranslateUi(Form)
         QtCore.QMetaObject.connectSlotsByName(Form)

     def retranslateUi(self, Form):
         _translate = QtCore.QCoreApplication.translate
         Form.setWindowTitle(_translate("Form", "Test Thread"))
         self.btnRun.setText(_translate("Form", "Run"))
         self.btnStop.setText(_translate("Form", "Stop"))

-------------------------------------------

When i click the Start button the application crashes with segmentation 
fault.

Thread.py
-------------------------------------------

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from MainWindow import *
import sys
import time

class MainWindow(QWidget, QThread):
     def __init__(self, parent=None):
         super(MainWindow, self).__init__(parent)
         self.ui = Ui_Form()
         self.ui.setupUi(self)
         self.center()
         #Init progressBar
         self.ui.progressBar.setValue(0)
         #Buttons
         self.ui.btnRun.clicked.connect(self.start)
         self.ui.btnStop.clicked.connect(self.wait)

     def run(self):
         count = 0
         while count <= 100:
             count += 1
             self.ui.progressBar.setValue(count)
             time.sleep(1)

     def center(self):
         # geometry of the main window
         qr = self.frameGeometry()

         # center point of screen
         cp = QDesktopWidget().availableGeometry().center()

         # move rectangle's center point to screen's center point
         qr.moveCenter(cp)

         # top left of rectangle becomes top left of window centering it
         self.move(qr.topLeft())



if __name__ == '__main__':
     app = QApplication(sys.argv)
     app.setAttribute(Qt.AA_DontShowIconsInMenus, False)
     w = MainWindow()
     #   Disable maximize window button
     w.setWindowFlags(Qt.WindowCloseButtonHint | 
Qt.WindowMinimizeButtonHint)
     w.show()
     sys.exit(app.exec_())




More information about the PyQt mailing list