Как я могу прекратить печатать числа, нажимая на кнопку в pyqt4 - PullRequest
1 голос
/ 11 марта 2019

Я хочу начать печатать числа в графическом интерфейсе в pyqt4, но когда я нажал кнопку пуска, он зависает, и мне нужно закрыть окно де, я хочу запустить процесс psocess, нажав на кнопку и остановив его с помощью другой кнопки, здесь я позволил код

Это та часть, где я пытался запустить и остановить процесс

class LecturaFrecuencia(QMainWindow):
    """docstring for LecturaFrecuencia"""
    def __init__(self, parent):
        super(LecturaFrecuencia, self).__init__(parent)
        uic.loadUi('frecuencia.ui', self)
        global START
        self.button_volver.clicked.connect(self.regresar)
        self.button_terminar.clicked.connect(self.terminar_monitoreo)
        self.button_guardar.clicked.connect(self.guardar)
        self.button_iniciar.clicked.connect(self.iniciarLectura)

    def iniciarLectura(self):
        START = 1
        while START :
            pqrst= random.randint(55,101)
            time.sleep(1.0)
            print(str(pqrst))
            self.pqrst.setText(str(pqrst))
            if self.button_terminar.isChecked():
                START = 0
            else:
                pass

1 Ответ

0 голосов
/ 11 марта 2019

Никогда не используйте time.sleep() в потоке GUI, так как он замораживает его.Если вы хотите выполнять периодические задачи, используйте QTimer:

import random
from PyQt4 import QtCore, QtGui, uic

class LecturaFrecuencia(QtGui.QMainWindow):
    """docstring for LecturaFrecuencia"""
    def __init__(self, parent=None):
        super(LecturaFrecuencia, self).__init__(parent)
        uic.loadUi('frecuencia.ui', self)

        timer = QtCore.QTimer(
            self,
            interval=1000,
            timeout=self.processing
        )

        self.button_iniciar.clicked.connect(timer.start)
        self.button_terminar.clicked.connect(timer.stop)

    @QtCore.pyqtSlot()
    def processing(self):
        pqrst = random.randint(55,101)
        self.pqrst.setText("{}".format(pqrst))

if __name__ == '__main__':
    import sys 
    app = QtGui.QApplication(sys.argv)
    w = LecturaFrecuencia()
    w.show()
    sys.exit(app.exec_())
...