Thank you for all of your explanation and examples, it's work

Pada Rabu, 16 Mei 2018 00.16.28 UTC+7, Jeremy Webster menulis:
>
> To add to Luke's point
>
> 1. I suspect you should use QThread instead of python's threading.Thread, 
> since QThread will provide signals and slots that will easily allow the 
> thread to communicate back and forth with the GUI.
>
> 2.  Some tutorials will tell you to subclass QThread, but that seems to be 
> bad advice, the correct way is to create a worker object, then add it to a 
> QThread. 
>
> 3. (For a C++ based explanation, but one that applies to pyqt as well 
> https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/
>  
> )
>
> 4. For a pyqt4 example, check out Matthew Levine's solution in this 
> stackoverflow post... ( 
> https://stackoverflow.com/questions/6783194/background-thread-with-qthread-in-pyqt?
>  
> )
>
>
>
> On Tuesday, May 15, 2018 at 9:55:52 AM UTC-6, Jan Sebastian 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/74bc62fe-272a-46e8-a257-58ba6ce6b68c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to