from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time

class SomeApp(QWidget):
    def __init__(self):
        QWidget. __init__(self)
        self.setWindowTitle('Here we go')
        self.bsolve = QPushButton(self)
        self.bsolve.setGeometry(QRect(50,50, 40,20))
        self.bsolve.setText('!')
        self.bsolve.clicked.connect(self.myfoo)
        self.bsolve.setToolTip('Press X to win')
        self.show()

    def myfoo(self):

        n = 10
        progress = QProgressDialog('In use...', 'Stop!', 0, n, self)
        progress.setWindowModality(Qt.WindowModal)
        progress.forceShow()
        for i in range(n):

            progress.setValue(i)
            if progress.wasCanceled():
                break

            time.sleep(1)

        progress.setValue(n)

if __name__ == '__main__':
    import sys
    apl = QApplication(sys.argv)
    window = SomeApp()
    sys.exit(apl.exec_())
