2010-07-02 4 views
1

J'ai une application django, servie via Twisted, qui sert également d'autres services (trois sockets, principalement).Avoir l'application PyQt contrôlant tout. Comment utiliser le réacteur?

Je dois le faire fonctionner sous Windows, et je décide d'écrire une application PyQt4 qui agit comme Apache Service Monitor pour Windows.

Je n'ai pas été en mesure de connecter un réacteur torsadé au réacteur d'application pyqt, de sorte que toute suggestion à cet égard sera la bienvenue également.

Maintenant, j'ai ce genre d'architecture:

  • QMainWindow qui, __ __ init() a la fonction log.addObserver (callback), et le widget.
  • Initialisation torsadée classe qui s'étend QtCore.QThread et fonctionne dans un thread différent.
  • l'application django qui tourne sur Twisted.

Je dois comprendre comment exécuter le réacteur, becouse appelant reactor.start() de QtCore.QThread fonctionne pas du tout, me donner:

exceptions.ValueError: signal only works in main thread 

Aussi je demande votre opinion sur la conception des applications, cela a-t-il un sens pour vous?

Répondre

1

Je ne suis pas sûr de comprendre totalement votre conception, mais ce que je peux dire, c'est que vous devez utiliser un seul réacteur dans une application. Le réacteur est la boucle principale (événement) de l'application. Et, je pense, ce réacteur devrait être le QTReactor dans votre cas.

+0

C'est vrai, mais je n'ai pas réussi à le faire tourner. –

+0

Une chose est que vous devriez utiliser 'reactor.run()' pour démarrer le réacteur (et non 'reactor.start()'. Pouvez-vous exécuter la démo * du réacteur QT * du lien que j'ai posté? , Je dirais, basez votre conception de cette démo – Etienne

+0

Cette démo est pour qt3, pas pour qt4, malheureusement –

Questions connexes