Hallo 
Ik ben bezig met een programma in Python waarbij ik een laadschermpje wil laten zien op het moment dat hij de benodigde bestanden in aan het laden is (bij het starten van het programma).
Hiervoor heb ik een heel simpel PyGTK windowtje gemaakt met een label (waarin staat welk bestand het programma aan het laden is) en een progressbar (waar ik de totale voortgang in wil tonen)
Nu wil ik natuurlijk mijn laad code draaien en ondertussen het windowtje updaten.
Alleen moet je gtk.main() aanroepen om de GTK+ event-handling loop te starten. Maar als die loop gestart is doet mn programmatje natuurlijk niks meer totdat die loop weer stopt.
Dus heb ik een simpele poging gedaan om het te multithreaden:
)
Maar wat blijkt: gtk.main() locked alles (van wat ik heb begrepen) en die LoadingThread code doet niks totdat de GTK loop gestopt is. Oftewel, ik ben weer terug bij af
Threading is volgens deze pagina wel mogelijk maar relatief 'omslachtig'.
Dus nu vraag ik me af of er niet andere mogelijkheden zijn om 'achtergrond code' te draaien terwijl het GTK windowtje toch gewoon netjes zijn signalen afvangt, of anders of iemand misschien wat tips heeft wat betreft threading in combinatie met GTK.
Alvast bedankt voor enige hulp of tips
Ik ben bezig met een programma in Python waarbij ik een laadschermpje wil laten zien op het moment dat hij de benodigde bestanden in aan het laden is (bij het starten van het programma).
Hiervoor heb ik een heel simpel PyGTK windowtje gemaakt met een label (waarin staat welk bestand het programma aan het laden is) en een progressbar (waar ik de totale voortgang in wil tonen)
Nu wil ik natuurlijk mijn laad code draaien en ondertussen het windowtje updaten.
Alleen moet je gtk.main() aanroepen om de GTK+ event-handling loop te starten. Maar als die loop gestart is doet mn programmatje natuurlijk niks meer totdat die loop weer stopt.
Dus heb ik een simpele poging gedaan om het te multithreaden:
Python:
(de code is niet al te slim geschreven maar het was even een snelle test 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| class LoadingWindowThread(threading.Thread): def run(self): LoadingWindow() # Een class waarin het windowtje gemaakt wordt en signals worden afgevangen gtk.main() class LoadingThread(threading.Thread): def run(self): # een lap code waarin bestanden worden ingeladen def main(): loadingThread = LoadingThread() windowThread = LoadingWindowThread() windowThread.start() loadingThread.start() return 0 if __name__ == "__main__": main() |
Maar wat blijkt: gtk.main() locked alles (van wat ik heb begrepen) en die LoadingThread code doet niks totdat de GTK loop gestopt is. Oftewel, ik ben weer terug bij af
Threading is volgens deze pagina wel mogelijk maar relatief 'omslachtig'.
Dus nu vraag ik me af of er niet andere mogelijkheden zijn om 'achtergrond code' te draaien terwijl het GTK windowtje toch gewoon netjes zijn signalen afvangt, of anders of iemand misschien wat tips heeft wat betreft threading in combinatie met GTK.
Alvast bedankt voor enige hulp of tips