私はPythonを初めて使っています(実際には、PC開発の初心者です)、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()私はwx.TextCtrl(tc2)オブジェクト(tc1はスプリッタの上半分にあり、tc2は下半分にあります)の下の方にFileDialogの残りを表示しています。
ファイルが完全にロードされ、内容がtc1に表示されると、tc2はリフレッシュして表示されます。
スプリッターではなくtc1とtc2でリフレッシュメソッドを呼び出そうとしましたが、これは効果がないようです。
有用な提案があれば歓迎します。ありがとう。
ご協力いただきありがとうございます。私が推奨するソリューションをお読みいただき、アプリケーションに実装します。 –