import sys
from PySide import QtGui, QtScript
from PySide.QtCore import QTimer, SIGNAL, QEventLoop
import qt4reactor
        
app = QtGui.QApplication(sys.argv)

qt4reactor.install()

from twisted.internet import reactor, task

class doNothing(object):
    def __init__(self):
        self.count = 0
        self.running=False
        task.LoopingCall(self.printStat).start(1.0)

        
    def buttonClick(self):
        if self.running:
            self.running=False
            print 'CLICK: calling reactor stop...'
            reactor.stop()
            print 'reactor stop called....'
        else:
            self.running=True
            print 'CLICK: entering run'
            reactor.run()
            print 'reactor run returned...'
        
    def printStat(self):
        print 'tick...'

t=doNothing()

engine = QtScript.QScriptEngine()

button = QtGui.QPushButton()
scriptButton = engine.newQObject(button)
engine.globalObject().setProperty("button", scriptButton)

app.connect(button, SIGNAL("clicked()"), t.buttonClick)

engine.evaluate("button.text = 'Hello World!'")
engine.evaluate("button.styleSheet = 'font-style: italic'")
engine.evaluate("button.show()")

app.exec_()
print 'fell off the bottom?...'