2009-09-08 5 views
0

Le code de base que j'ai jusqu'ici est ci-dessous. Comment puis-je thread gtk.main() de sorte que le code après l'affichage est initialisé asynchrone?Comment puis-je exécuter gtk.main() asynchronsly dans pygtk?

import pygtk 
pygtk.require("2.0") 
import gtk 

class Display(): 

    def __init__(self): 
     self.fail = "This will fail to display" 
     window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     window.connect("destroy", lambda w: gtk.main_quit()) 
     window.show() 
     self.main()    

    def main(self): 
     gtk.main() 

class Test(): 

    def __init__(self, display): 
     print display.fail 

d = Display() 
t = Test(d) 
+0

Qu'est-ce que vous essayez d'atteindre? Quel est le vrai problème que vous résolvez? –

+0

J'essaie de contrôler une fenêtre gtk et ses différents éléments d'une autre classe. – aberkowitz

+0

Votre programme devrait avoir une seule boucle principale. Peut-être que cela ne devrait pas être contrôlé par la classe Display. – u0b34a0f6ae

Répondre

0

Il suffit de mettre l'appel gtk.main après tout le reste. Si vous avez besoin d'avoir le contrôleur dans un thread séparé, assurez-vous de faire toutes les fonctions/méthodes liées gtk en faisant gobject.idle_add (widget.method).

import pygtk 
pygtk.require("2.0") 
import gtk 

class Display(object): 

    def __init__(self): 
     self.fail = "This will fail to display" 
     window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     window.connect("destroy", lambda w: gtk.main_quit()) 
     window.show()    


class Test(object): 

    def __init__(self, display): 
     print display.fail 

d = Display() 
t = Test(d) 

gtk.main() 
Questions connexes