(Jul-01-2018, 05:28 PM)Alfalfa Wrote: You can use a QTimer for that;
def __init__(self): self.timer = QtCore.QTimer(interval=1000) self.timer.timeout.connect(self.update) self.timer.start() def update(self): print("Hello world")
Thank you for your reply, can you tell me more specific where I should put this code? I'm so sorry the codes I've showed is the last update of my friend before I get entrusted with this project
I'll show you the rest of the code, maybe you can take a look of it
this codes belong to the main window
from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(800, 620) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.frame = QtGui.QFrame(self.centralwidget) self.frame.setGeometry(QtCore.QRect(0, 0, 801, 611)) self.frame.setFrameShape(QtGui.QFrame.NoFrame) self.frame.setFrameShadow(QtGui.QFrame.Plain) self.frame.setObjectName(_fromUtf8("frame")) self.grFFT = PlotWidget(self.frame) self.grFFT.setGeometry(QtCore.QRect(10, 30, 781, 241)) self.grFFT.setObjectName(_fromUtf8("grFFT")) self.grPCM = PlotWidget(self.frame) self.grPCM.setGeometry(QtCore.QRect(10, 300, 781, 241)) self.grPCM.setObjectName(_fromUtf8("grPCM")) self.pbLevel = QtGui.QProgressBar(self.frame) self.pbLevel.setGeometry(QtCore.QRect(10, 550, 791, 23)) self.pbLevel.setMaximum(1000) self.pbLevel.setProperty("value", 123) self.pbLevel.setObjectName(_fromUtf8("pbLevel")) self.label_2 = QtGui.QLabel(self.frame) self.label_2.setGeometry(QtCore.QRect(10, 10, 948, 13)) self.label_2.setObjectName(_fromUtf8("label_2")) self.label_3 = QtGui.QLabel(self.frame) self.label_3.setGeometry(QtCore.QRect(10, 280, 721, 20)) self.label_3.setObjectName(_fromUtf8("label_3")) self.pushButton = QtGui.QPushButton(self.frame) self.pushButton.setGeometry(QtCore.QRect(10, 580, 191, 23)) self.pushButton.setObjectName(_fromUtf8("pushButton")) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.label_2.setText(_translate("MainWindow", "frequency data (FFT):", None)) self.label_3.setText(_translate("MainWindow", "raw data (PCM):", None)) self.pushButton.setText(_translate("MainWindow", "PushButton", None)) from pyqtgraph import PlotWidgetand this codes is to run the entire above codes (along with the one I posted before)
from PyQt4 import QtGui,QtCore import sys import ui_main import numpy as np import pyqtgraph import SWHear class SoundApp(QtGui.QMainWindow, ui_main.Ui_MainWindow): def __init__(self, parent=None): pyqtgraph.setConfigOption('background', 'w') #before loading widget super(SoundApp, self).__init__(parent) self.setupUi(self) self.grFFT.plotItem.showGrid(True, True, 0.7) self.grPCM.plotItem.showGrid(True, True, 0.7) self.maxFFT=0 self.maxPCM=0 self.ear = SWHear.SWHear(rate=44100,updatesPerSecond=20) self.ear.stream_start() def update(self): if not self.ear.data is None and not self.ear.fft is None: pcmMax=np.max(np.abs(self.ear.data)) if pcmMax>self.maxPCM: self.maxPCM=pcmMax self.grPCM.plotItem.setRange(yRange=[-pcmMax,pcmMax]) if np.max(self.ear.fft)>self.maxFFT: self.maxFFT=np.max(np.abs(self.ear.fft)) #self.grFFT.plotItem.setRange(yRange=[0,self.maxFFT]) self.grFFT.plotItem.setRange(yRange=[0,1]) self.pbLevel.setValue(1000*pcmMax/self.maxPCM) pen=pyqtgraph.mkPen(color='b') self.grPCM.plot(self.ear.datax,self.ear.data,pen=pen,clear=True) pen=pyqtgraph.mkPen(color='r') self.grFFT.plot(self.ear.fftx,self.ear.fft/self.maxFFT,pen=pen,clear=True) QtCore.QTimer.singleShot(1, self.update) # QUICKLY repeat if __name__=="__main__": app = QtGui.QApplication(sys.argv) form = SoundApp() form.show() form.update() #start with something app.exec_() print("DONE")it'll be easier if you run it, the all .py codes I put it here in my drive
Sound App