Seite 1 von 1

mehrere threads mit eigenen Fenstern

Verfasst: Dienstag 30. Januar 2007, 15:14
von tom1step2pygtk
Hallo,

ich bin auf der Suche nach einer Lösung für folgendes Problem:
Wie programmiert man eine Applikation in Python gegen GTK+ (PyGtk), in der mehrere Threads jeweils ein eigenes Fenster haben und jeweils die gtk.main() Funktion rufen?

Hatte mir das in etwas so gedacht:

Code: Alles auswählen

from threading import Thread
import gtk

class MyThreadClass( Thread ):
  def __init__( self ):
    Thread.__init__( self )
    self.w = gtk.Window()
    b = gtk.Button( "Feed me" )
    b.connect( "clicked", self.Clicked )
    self.w.add( b )
    self.w.show_all()

  def run( self ):
    gtk.gdk.threads_enter() 
    gtk.main() 
    gtk.gdk.threads_leave() 
    
  def Clicked( self, widget ):
    print widget
    gtk.main_quit()

def Clicked( widget ):    
  print widget
  gtk.main_quit()
  
gtk.gdk.threads_init() 

w = gtk.Window()
b = gtk.Button( "I'm hungry!" )
b.connect( "clicked", Clicked )
w.add( b )
w.show_all()

t = MyThreadClass()
t.start()

gtk.gdk.threads_enter() 
gtk.main() 
gtk.gdk.threads_leave() 
Leider geht das nicht. :?
Weiß da jemand einen Rat?

Vielen Dank,
tom1step2pygtk

P.S: ist natürlich nicht mein erster Schritt mit PyGtk :)

Verfasst: Dienstag 30. Januar 2007, 21:02
von Leonidas
Am besten du nutzt die entsprechenden Pseudothreads die dir gobject mit gobject.idle_add() und gobject.timeout_add() bietet - spart viele nerven.

Siehe auch meinen alten Thread zum Thema GTK+ und Threads.

Bei der Gelegenheit erlaube ich es mir, diesen Thread auch ins PyGTK-Forum zu verschieben.