Я новичок в Python (и, действительно, новый для ПК) и хотел бы знать, как правильно решить проблему, с которой я использую FileDialog в приложении Windows, я пишу ...Python (Windows XP) - wx.FileDialog частично остается после Destroy()
Вот соответствующая часть моего кода до сих пор ...
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)')
Моя проблема заключается в том, что даже если я называю open_dlg.Destroy() и самостоятельно. splitter.Refresh() У меня все еще есть остатки FileDialog, показывающие более нижний из моих объектов wx.TextCtrl (tc2) (tc1 находится в верхней половине разделителя и tc2 в нижней половине).
После того, как файл (ы) полностью загружены и содержимое отображается в tc1, тогда tc2 обновится и отобразится, как я ожидал.
Я попытался вызвать методы обновления на tc1 и tc2 вместо разделителя, но это, похоже, не имеет никакого эффекта.
Любые полезные предложения будут приветствоваться. Благодарю.
Большое спасибо за вашу помощь. Я прочитаю рекомендации, которые вы рекомендуете, и реализуйте их в своем приложении. –