【问题标题】:How can I stop printing numbers clicking on a pushbutton如何停止单击按钮打印数字
【发布时间】:2019-03-11 18:04:38
【问题描述】:

我想在 pyqt4 的 GUI 中开始打印数字,但是当我按下开始按钮时,它会冻结,我必须关闭窗口,我想点击一个按钮开始处理,然后用另一个按钮停止,在这里我让我的代码

这是我尝试启动和停止进程的部分

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

【问题讨论】:

    标签: python python-3.x pyqt4


    【解决方案1】:

    永远不要在 GUI 线程中使用time.sleep(),因为它会冻结它。如果您想执行周期性任务,请使用 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_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2015-04-25
      • 2012-12-06
      • 2018-08-15
      • 2021-11-17
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多