[PyQt] how to set up a timer to call a method after a delay?
Steve Castellotti
sc at puzzlebox.info
Wed Jun 30 12:46:36 BST 2010
Hello all-
I have written a simple socket server based around
QtNetwork.QTcpServer which I want to use to send a single stream of
information to multiple connected clients, with updates pushed at a
specific frequency (lets say once per second).
I am a little confused how to set up a timer which will emit a
signal that is connected to my method for sending the data.
For example, under Python Twisted, I might have something like this:
def sendData(self, timer):
data = self.getCurrentData()
self.sendLine(data)
reactor.callLater(timer, self.sendData, timer)
...whereby the "callLater" function makes sure the function happens
at a regular interval.
I have tried setting up a QTimer object in the __init__ method of my
socket server's class:
self.timer = QtCore.QTimer()
self.timer.connect(self.timer, QtCore.SIGNAL("timeout()"),
self.sendData)
self.timer.start(1000) # 1 second
...but received an exception that "QTimer can only be used with
threads started with QThread" which leads me to believe I will need to
implement threading for my server (also I expected to need to send
"parent=self" when instantiating the QTimer object so I know I must be
doing something wrong).
Is there an easier way to accomplish what I am trying to do?
If there is obvious documentation which I have overlooked please
just point me in the right direction.
Thanks in advance.
Steve Castellotti
More information about the PyQt
mailing list