[PyQt] QPropertyAnimation called from another thread
Martin Airs
camberwell at gmail.com
Fri Aug 13 00:59:36 BST 2010
Good day all,
Here is the scenario....
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.scene = QtGui.QGraphicsScene(self)
self.scene.setSceneRect(0, 0, 130, 257)
self.ui.graphicsView.setScene(self.scene)
.........
......
....
def createUserTile(self, nick, ip):
self.item = Item(nick)
self.scene.addItem(self.item)
self.anim = QtCore.QPropertyAnimation(self.item, 'pos')
self.anim.setEasingCurve(QtCore.QEasingCurve.OutBounce)
self.anim.setStartValue(QtCore.QPointF(-150, 1))
self.anim.setEndValue(QtCore.QPointF(4, 1))
self.anim.setDuration(1500)
self.anim.start()
class Client(asyncore.dispatcher, QtCore.QThread):
def __init__(self, parent=None):
asyncore.dispatcher.__init__(self)
QtCore.QThread.__init__(self,parent)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.connect((SERVER,PORT))
def run(self):
asyncore.loop()
def handle_connect(self):
request_handler(self)
app = QtGui.QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
myclient = Client()
myclient.start()
gobject.threads_init()
sys.exit(app.exec_())
ok so basicaly I have the Mainwindow, then I start a Client() in a
thread using QThread, I call myapp.createUserTile(nick, ip) from within
the Client() thread and the animation doesn't play, but if I call
createUserTile(nick, ip) from MainWindows __init__ the animation plays fine.
Is there anyway I can call myapp.createUserTile(nick, ip) and have the
animation play?? I've tried self.anim.moveToThread but thats didn't help
Thanks in advance
Martin
More information about the PyQt
mailing list