My first thought is that the example is attempting to perform GUI operations from a thread. Qt does not support this behavior, so that probably explains the freezing. If you search a little, there are many articles and examples that discuss how to properly use threads with Qt.
On Tue, May 15, 2018, 08:55 Jan Sebastian <[email protected]> wrote: > I write an application that displays random number in real time graph, it > run perfectly on windows but when I try it on raspberry pi it alwarys stop > updating the graph, but the proses in the python shell is still running > generate a rundom number and the program didn't. > > Any idea, how to fix it? > > the example of my code: > > > from PyQt4 import QtCore,QtGui,uic > from PyQt4.QtCore import QTime, QTimer > import sys > import time > import threading > from pyqtgraph import ViewBox, PlotWidget > #import pyqtgraph as pg > from pyqtgraph.Qt import QtCore, QtGui > import numpy as np > from blupblupshub import BlumBlumShub > from TimeAxisItem import TimeAxisItem > from collections import deque > import random > > > qtCreatorFile = "mejaGetar2.ui" > > > Ui_MainWindow,QtBaseClass = uic.loadUiType(qtCreatorFile) > > class MyApp(QtGui.QTabWidget,Ui_MainWindow): > akselerasi = 0 > threads = [] > threads2 = [] > varGraph1 = object > aa = False > def __init__(self): > > QtGui.QTabWidget.__init__(self) > Ui_MainWindow.__init__(self) > self.setupUi(self) > self.akselerasi.setMinimum(0) > self.akselerasi.setMaximum(30) > self.akselerasi.setValue(0) > > self.akselerasi.sliderReleased.connect(self.getThread) > self.graph1.setRange(xRange=None, yRange=[-1, 1 ]) > self.graph1.setLabel('bottom', 'time', 's') > self.graph1.showGrid(x=True, y=True) > #self.graph1.setLab('bottom',TimeAxisItem(orientation='bottom')) > self.graph1.setMouseEnabled(x=False, y=False) > MyApp.varGraph1 = self.graph1 > > self.l1.setText(str(self.akselerasi.value())) > #self.currentChanged.connect(self.forceCloseThread) > > > def getThread(self): > > if self.sender() == self.akselerasi: > MyApp.akselerasii = int(self.akselerasi.value()) > > if MyApp.akselerasii > 0: > > thread1 = DynamicThread("akselerasi") > > if MyApp.aa == True: > print("second") > minRange = int(self.akselerasi.value()) * -1 > self.graph1.setRange(xRange=None, yRange=[minRange, > int(self.akselerasi.value()) ]) > thread1.trigrer(MyApp.akselerasii) > > else: > thread1.trigrer(MyApp.akselerasii) > MyApp.threads2.append(thread1) > minRange = int(self.akselerasi.value()) * -1 > self.graph1.setRange(xRange=None, yRange=[minRange, > int(self.akselerasi.value()) ]) > MyApp.aa = True > > print("first") > thread1.start() > else: > for t in MyApp.threads2: > MyApp.aa = False > t.stop() > self.graph1.clear() > > > class DynamicThread(threading.Thread,MyApp): > intAkselerasi = 0 > ruuun = False > > def __init__(self,sub): > threading.Thread.__init__(self) > > self.subject = sub > > def trigrer(self,num): > DynamicThread.intAkselerasi = num > > def run(self): > listData = [] > a = 0 > count = 0 > test = 0 > t = QTime() > t.start() > dataGraph = deque(maxlen=20) > x1 = [] > y1 = [] > > print("starting " + self.subject) > dynamicGenerator = BlumBlumShub() > curve = MyApp.varGraph1.plot(pen=(255,0,0)) > while DynamicThread.ruuun == True: > if DynamicThread.intAkselerasi > 0: > minus = DynamicThread.intAkselerasi *-1 > data = random.randint(minus,DynamicThread.intAkselerasi) > > dataGraph.append({'x': t.elapsed(), 'y': data}) > x1 = [item['x'] for item in dataGraph] > y1 = [item['y'] for item in dataGraph] > curve.setData(x=x1, y=y1) > print("test: ",data) > print("\n") > a = a + 1 > > time.sleep(0.5) > > else: > DynamicThread.ruuun = False > print("stop") > break > print("stoping " + self.subject) > dataGraph = [] > x1 = [] > y1 = [] > > def start(self): > DynamicThread.ruuun = True > super(DynamicThread,self).start() > > def stop(self): > DynamicThread.ruuun = False > > if __name__ == "__main__": > app = QtGui.QApplication(sys.argv) > window = MyApp() > window.show() > sys.exit(app.exec_()) > > > > -- > You received this message because you are subscribed to the Google Groups > "pyqtgraph" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pyqtgraph/292d1a51-6aae-4d2c-b7c9-6228dccf178b%40googlegroups.com > <https://groups.google.com/d/msgid/pyqtgraph/292d1a51-6aae-4d2c-b7c9-6228dccf178b%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/CACZXET9NipqL3Wv4YrC53dfA11YLv3pfqNcvOQjfz%2BMZD6eU7g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
