2013-02-05 11 views
1

J'ai une application Python avec un contrôle wx.dirPicker qui peut être modifié manuellement et je dois être sûr que le chemin choisi existe avant d'exécuter mon code. Pour ce faire, j'utilise ceci:MessageDialog ne se ferme pas

def m_dirPicker1OnUpdateUI(self, event): 
     src_directory = self.m_dirPicker1.GetTextCtrlValue() 
     if os.path.exists(src_directory)==False: 
         dlg = wx.MessageDialog(self, "The specified path doesn't exist", "Warning", wx.ICON_ERROR | wx.ICON_EXCLAMATION) 
         dlg.ShowModal()  
         #print(dlg.GetReturnCode()) 
         if dlg.GetReturnCode() == 0: 
          self.Destroy() 

Cela fonctionne très bien, en détectant si le chemin existe.

Cependant, lorsque le chemin n'existe pas, la boîte de dialogue de message apparaît mais je ne peux pas la fermer après avoir appuyé sur le bouton OK, et je ne comprends pas pourquoi.

Merci.

Répondre

0

Je pense que vous devriez appeler "dlg.Destroy()" avant "self.Destroy()":

result = dlg.ShowModal()  
dlg.Destroy() 
if result == 0: 
    self.Destroy() 
+0

J'ai utilisé votre code mais cela ne fonctionne pas non plus. J'ai résolu le problème en changeant la façon dont je traitais le problème – TMoover

+0

@TMoover: Je suis heureux de savoir que vous avez résolu le problème! :) Cela peut être sympa pour les futurs lecteurs si vous pouvez ajouter une réponse/un commentaire à votre propre question en donnant quelques détails sur la façon dont vous avez réussi à travailler sur ce problème. – furins

1

Ma première approche était: Chaque fois que quelqu'un change wx.dirpicker chemin à la main, j'ai besoin pour être sûr que le chemin existe puisque mon application va exporter un fichier de rapport vers ce chemin. Plus tard, j'ai décidé de vérifier le chemin uniquement lorsque quelqu'un appuie sur le bouton "Créer un rapport". Pour ce faire, j'utilise le code suivant:

try: 
    if src_directory = self.m_dirPicker1.GetTextCtrlValue(): 
     if os.path.exists(src_directory)==False: 
     dlg = wx.MessageDialog(self, "The specified path doesn't exist", "Warning", wx.ICON_EXCLAMATION) 
     dlg.ShowModal() 
    else: 
     #run my code to create report file in src_directory path 

except: 
    create report_error file