Re: [PyQt] timers from mainwindow

2010-09-15 Thread Sebastian Elsner

Of course thats it, thanks :)


On 09/14/2010 08:01 PM, Doug Bell wrote:

Sebastian Elsner wrote:

I would like to start a QTimer from a mainwindow's menu, creating a
new instance of a custom class. See the example below. All works
except the timer's callback is never called. Asking if the timer is
active returns True. I ran out of ideas. Maybe I misunderstand how
timers work?! Any help appreciated.

def doit(self):
Timers()

You're not keeping a reference to your Timers instance.  It's getting
garbage collected before the timer fires.

Doug
___
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[PyQt] timers from mainwindow

2010-09-14 Thread Sebastian Elsner

Hello,

I would like to start a QTimer from a mainwindow's menu, creating a new 
instance of a custom class. See the example below. All works except the 
timer's callback is never called. Asking if the timer is active returns 
True. I ran out of ideas. Maybe I misunderstand how timers work?! Any 
help appreciated.


from PyQt4 import QtCore, QtGui
from PyQt4 import uic
import sys


class Timers(QtCore.QObject):
def __init__(self, parent=None):
QtCore.QObject.__init__(self)
print Timers instance created
self.timer = QtCore.QTimer()
self.connect(self.timer, QtCore.SIGNAL(timeout()), 
self.callback)
self.timer.start(1000)
print self.timer.isActive()

def callback(self):
print timer called

class MainWindow(QtGui.QMainWindow):

def __init__(self):
QtGui.QMainWindow.__init__(self)
self.menubar = QtGui.QMenuBar(self)
self.menuMenu = QtGui.QMenu(self.menubar)
self.setMenuBar(self.menubar)
self.actionDOIT = QtGui.QAction(self)
self.menuMenu.addAction(self.actionDOIT)
self.menubar.addAction(self.menuMenu.menuAction())
self.menuMenu.setTitle(menu)
self.actionDOIT.setText(DO IT)
self.connect(self.actionDOIT, QtCore.SIGNAL(triggered()), 
self.doit)

def doit(self):
Timers()

if __name__ == __main__:
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())

Thank you

Sebastian


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] timers from mainwindow

2010-09-14 Thread Doug Bell
Sebastian Elsner wrote:
 I would like to start a QTimer from a mainwindow's menu, creating a
 new instance of a custom class. See the example below. All works
 except the timer's callback is never called. Asking if the timer is
 active returns True. I ran out of ideas. Maybe I misunderstand how
 timers work?! Any help appreciated.
 
   def doit(self):
   Timers()

You're not keeping a reference to your Timers instance.  It's getting
garbage collected before the timer fires.

Doug
___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt