Bonsoir à tous,
je suis en train de porter une application qui tourne très bien sous Windows vers Linux mais je dois faire face à des bugs très bizarres :
J'utilise delayed results pour garder une GUI "active" pendant une longue opération, mais le thread a besoin de modifier l'interface pendant les opérations (gestions des gauges, actualisation d'un statictext, écriture du log,...)
Mais il arrive qui cette méthode fasse crasher la GUI (le thread de fond contune de tourner mais le programme reste gelé même une fois celui ci terminé) :
Plus grave, l'affichage de dialogs (sans parent) appelés par le thread de fond fait carrément planter le programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def setCurTask(self, *args): """ Updates the current task text with provided strings (2 required). """ try: #self.opCurTask est un StaticText self.opCurTask.SetLabel(self.inst["loc"](2030)%args) self.opSizer.Layout() except: debug()
Après une petite recherche, ce problème viendrait plus de X11 que de Wx ou Python.python: ../../src/xcb_lock.c :33 : _XCBUnlockDisplay: L'assertion « xcb_get_request_sent(dpy->xcb->connection) == dpy->request » a échoué.
Je me doute bien que ces actions ne sont pas vraiment à recommander, mais dans ce cas comment intéragir de façon fiable avec l'utilisateur pendant qu'un thread est en train de tourner ?
Partager