私は Python を初めて使用し (実際、PC 開発も初めてです)、作成中の Windows アプリケーションで FileDialog を使用して問題を適切に解決する方法を知りたいと考えています...
これまでのところ、私のコードの関連部分は次のとおりです...
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() と self.splitter.Refresh() を呼び出しても、wx.TextCtrl (tc2) オブジェクトの下部に表示される FileDialog の残りがまだ残っていることです (tc1 は上半分にあります)。下半分のスプリッターと tc2)。
ファイルが完全に読み込まれ、コンテンツが tc1 に表示されると、tc2 が更新され、期待どおりに表示されます。
スプリッターではなく tc1 と tc2 で更新メソッドを呼び出してみましたが、効果がないようです。
有用な提案は大歓迎です。ありがとう。