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.
For more options, visit https://groups.google.com/d/optout.