oglops

Untitled

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