GTK Splashscreen als Thread
Verfasst: Mittwoch 21. September 2011, 16:04
Ich versuche gerade, einen Splashscreen während der Ladezeit meines Programms (die ist recht lang) anzeigen zu lassen. Etwas anderes als per Thread fällt mir nicht ein, wenn das irgendwie ohne geht würde ich das vorziehen. Hier jedenfalls mein Code:
Erzeugt folgenden Fehler:
Aufruf durch:
Das komische an dem ganzen ist, dass es manchmal aber auch funktioniert und obige meldung nicht kommt. Wenn es jedoch funktioniert ist es so, dass durch den aufruf von hide_splash, also gtk.main_quit() der Splash trotzdem weiterhin angezeigt wird. Kurz danach wird die normale GTK-Oberfläche ohne Thread geladen, vielleicht liegt es auch daran.
Kann mir da jemand weiterhelfen?
Code: Alles auswählen
#!/usr/bin/python2
# -*- coding: utf8 -*
import gtk
import threading
class Splash(threading.Thread):
def __init__(self):
gtk.gdk.threads_init()
threading.Thread.__init__(self)
def run(self):
builder = gtk.Builder()
builder.add_from_file("ui/splash.glade")
wsplash = builder.get_object("wsplash")
wsplash.show()
gtk.gdk.threads_enter();
gtk.main()
gtk.gdk.threads_leave ();
def hide_splash(*args):
gtk.main_quit()
Code: Alles auswählen
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
python2: xcb_io.c:178: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
Code: Alles auswählen
splash = Splash()
splash.start()
Kann mir da jemand weiterhelfen?