Jul-16-2018, 12:45 PM
You have to use a QThread for your freq analyzer, then emit a signal to update the gui. For PyQt4 it would be something like this:
import sys import time from PyQt4 import QtGui, QtCore class WorkerThread(QtCore.QObject): updateFreq = QtCore.pyqtSignal(int) def __init__(self): super().__init__() @QtCore.pyqtSlot() def run(self): freq = 0 while True: freq += 1 self.updateFreq.emit(freq) time.sleep(5) class Main(QtGui.QMainWindow): def __init__(self): super().__init__() self.worker = WorkerThread() self.workerThread = QtCore.QThread() # Move the Worker object to the Thread object self.workerThread.started.connect(self.worker.run) # Init worker run() at startup self.worker.moveToThread(self.workerThread) self.worker.updateFreq.connect(self.updateFreq) # Connect your signals/slots self.workerThread.start() def updateFreq(self, freq): #self.ui.freqLabel.setText(str(freq) + " Hz") print(freq) if __name__== '__main__': app = QtGui.QApplication([]) gui = Main() sys.exit(app.exec_())