massimo di stefano wrote:

 .. done little step ahead :


import sys
from PyQt4 import QtCore, QtGui
import time

class MyThread(QtCore.QThread):
    def run(self):
        n = 0
        step = 1
        while True:
            n += step
            print n


class Gui(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QGroupBox.__init__(self, parent)
        self.gcenter = QtGui.QPushButton("X", self)
        self.gcenter.setAutoRepeat(True)
        guiLayout = QtGui.QGridLayout()
        guiLayout.addWidget(self.gcenter,1,0)
        self.setLayout(guiLayout)
        self.thread = MyThread()
self.connect(self.gcenter, QtCore.SIGNAL("clicked()"), self.thread.start)



if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    gui = Gui()
    gui.show()
    sys.exit(app.exec_())



now i need to stop it when i "release" the button,
tried with :

self.connect(self.gcenter, QtCore.SIGNAL("released()"), self.thread.quit)

but give :

AttributeError: stop


I'd suggest expanding your MyThread class to something like this:

class MyThread(QtCore.QThread):
    def __init__(self, parent = None):
        QtCore.QThread.__init__(self, parent)
        self.running = 1

     def run(self):
         n = 0
         step = 1
         while self.running:
             n += step
             print n
             self.msleep(100)

    def stop(self):
         self.running = 0

You should also look at the QtCore.QMutex() class, which provides a way to synchronize (via locking) between the thread process and other processes.

-Hazen

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to