On Thursday 08 February 2007 3:08 pm, Marco wrote: > Can I use LinuX signal as a tool for commuction with a QT(PyQt4) programme? > > The follow code didNOT work... > > > from PyQt4 import QtCore,QtGui > import signal > import sys > import os > > try: > import psyco > psyco.full() > except: > pass > > class Main(QtGui.QWidget): > def __init__(self): > QtGui.QWidget.__init__(self) > > self.frame = QtGui.QFrame(self) > self.label = QtGui.QLabel(str(os.getpid()), self.frame) > signal.signal(15, self.sig_handler) > print signal.getsignal(15) > > def sig_handler(self, signum, sframe): > print 'received!' > self.label.setText('haha') > self.show() > > ######################## > # main routine # > ######################## > if __name__ == '__main__': > app = QtGui.QApplication(sys.argv) > > main = Main() > main.show() > app.exec_()
The problem is that Python only delivers the signal when the interpreter is running but your program is sat in the Qt event loop. You need to force Qt to hand back to the interpreter from time to time. The easiest way is to use the object timer. Add "self.startTimer(500)" to your __init__() method and add the following dummy timer event handler... def timerEvent(self, e): pass Phil -- http://mail.python.org/mailman/listinfo/python-list