Advertisement
oglops

Untitled

Jul 13th, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python2
  2.  
  3. import sys,time
  4. from PyQt4 import QtCore, QtGui
  5.  
  6. class MyApp(QtGui.QWidget):
  7.     def __init__(self, parent=None):
  8.         QtGui.QWidget.__init__(self, parent)
  9.  
  10.         self.setGeometry(300, 300, 280, 600)
  11.         self.setWindowTitle('threads')
  12.  
  13.         self.layout = QtGui.QVBoxLayout(self)
  14.  
  15.         self.testButton = QtGui.QPushButton("test")
  16.         self.connect(self.testButton, QtCore.SIGNAL("released()"), self.test)
  17.         self.listwidget = QtGui.QListWidget(self)
  18.  
  19.         self.layout.addWidget(self.testButton)
  20.         self.layout.addWidget(self.listwidget)
  21.  
  22.     def add(self, text):
  23.         """ Add item to list widget """
  24.         print "Add: " + text
  25.         self.listwidget.addItem(text)
  26.         self.listwidget.sortItems()
  27.  
  28.     def addBatch(self, text="test", iters=6, delay=0.3):
  29.         """ Add several items to list widget """
  30.         for i in range(iters):
  31.             time.sleep(delay)  # artificial time delay
  32.             self.add(text + " " + str(i))
  33.  
  34.     def thread2Func(self) :
  35.         print 'in thread2Func'
  36.  
  37.     def test(self):
  38.         self.listwidget.clear()
  39.  
  40.         self.genericThread = GenericThread(self.addBatch,"from generic thread ",delay=0.3)
  41.         self.genericThread.start()  
  42.  
  43.         #self.thread2=GenericThread(self.thread2Func)
  44.  
  45. class GenericThread(QtCore.QThread):
  46.     def __init__(self, function, *args, **kwargs):
  47.         QtCore.QThread.__init__(self)
  48.         self.function = function
  49.         self.args = args
  50.         self.kwargs = kwargs
  51.  
  52.     def __del__(self):
  53.         self.wait()
  54.  
  55.     def run(self,x):
  56.         self.function(*self.args,**self.kwargs)
  57.         return  
  58.  
  59. # run
  60. app = QtGui.QApplication(sys.argv)
  61. test = MyApp()
  62. test.show()
  63. app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement