Je suis nouveau sur Python (et, en effet, nouveau pour le développement de PC) et je voudrais savoir comment je devrais résoudre correctement un problème que j'ai utilisé FileDialog dans une application Windows Je vous écris ...Python (Windows XP) - wx.FileDialog reste partiellement après Destroy()
Voici la partie pertinente de mon code jusqu'à présent ...
def SelectLogs(self, event):
dir = os.getcwd()
paths = []
open_dlg = wx.FileDialog(self, message='Select log file',
defaultDir=dir, style=wx.OPEN | wx.CHANGE_DIR | wx.MULTIPLE)
self.splitter.Refresh(True)
if open_dlg.ShowModal() == wx.ID_OK:
paths = open_dlg.GetPaths()
open_dlg.Destroy()
self.splitter.Refresh()
self.RetrieveLogData(paths)
def RetrieveLogData(self, paths):
count = 0
loglines = []
self.tc2.WriteText('Loading selected logs...')
paths.sort()
for log in paths:
read_data = []
f = open(log, 'r')
self.tc2.WriteText('\r\n ' + log)
read_data = f.readlines()
f.close()
count = count + 1
for line in read_data:
loglines.append(line)
self.tc1.WriteText(line)
self.tc2.WriteText('\r\nCompleted loading ' + str(count) + ' log(s)')
mon problème est que même si j'appelle open_dlg.Destroy() et moi. splitter.Refresh() J'ai encore des restes de l'affichage FileDialog sur l'objet inférieur de mes objets wx.TextCtrl (tc2) (tc1 est dans la moitié supérieure du séparateur et tc2 dans la moitié inférieure).
Une fois que le (s) fichier (s) est (sont) entièrement chargé (s) et que le contenu est affiché dans tc1, puis tc2 se rafraîchit et affiche comme je l'attendais.
J'ai essayé d'appeler les méthodes d'actualisation sur tc1 et tc2 plutôt que sur le séparateur, mais cela ne semble pas avoir d'effet.
Toutes les suggestions utiles seront les bienvenues. Merci.
Merci beaucoup pour votre aide - je vais lire les solutions que vous recommandez et les implémenter dans mon application. –