mon problème provient de l'utilisation de wxApp autant que je peux dire.wxPython: MainLoop() semble se bloquer
À l'intérieur d'un petit sous-programme, j'appelle un wx.MessageDialog pour demander un oui ou un non. Je récupère la réponse à un processus de certaines choses. Mon code exemple ci-dessous fonctionne réellement (bien qu'il pourrait être laid), sauf que la boîte de dialogue reste ouverte après avoir heurté un des boutons ...
import wx
from os import path
def HasFile(filename):
if path.isfile(filename):
app = wx.App()
dial = wx.MessageDialog(None,
'Die Datei "'+filename+'" wurde gefunden.\nSoll sie eingelesen werden?',
'Bitte antworten',
wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
result = dial.ShowModal()
dial.EndModal(retCode=0)
dial.Destroy()
app.MainLoop()
return result == wx.ID_YES
else:
return False
Ainsi, alors que le reste du programme ne devrait tout, la boîte est juste là. Il semble aussi que mes appels à matplotlib plus tard produisent des erreurs (une erreur Tkinter pour être précis), peut-être à cause des trucs wx?
Modifier: J'ai essayé de mettre fin à l'application avec un appel à app.Destroy(). Cela ne change pas le fait que la boîte est toujours là. Quand je lance un app.IsActive() après tout le programme se termine (presque comme un sys.exit())! Comment venir?
Edit 2: Ajout d'un wxApp comme ce n'est pas une bonne idée puisque les autres scripts sont affectés. Les commandes de traçage suivantes ne s'affichent pas et je ne sais pas comment résoudre ce problème. J'ai donc décidé de retirer le DialogBox ensemble. Appelant votre fonction avec EndModal supprimé, cela fonctionne bien et me renvoie à la console après avoir choisi oui/non.