3 つのタブ付きパネルを備えたアプリがあります。現在、同じパネルでwx.CallAfter(self.running_log1.AppendText, line)
AppendText を wx.TextCtrl に送信していますが、AppendText を別のタブ付きパネル RunningPane2 で wx.TextCtrl に送信したいのですが、wx.CallAfter(RunningPane2.running_log2.AppendText, line)
これは機能しません。または、RunningPane2 クラスを完全に削除してself.running_log2 = wx.TextCtrl
、RunningPane1 パネルから作成できますか?
class MainWindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(900, 700))
self.tabbed = wx.Notebook(self, -1, style=(wx.NB_TOP))
self.running1 = RunningPane1(self.tabbed, run_params)
self.running2 = RunningPane2(self.tabbed, run_params)
self.submissions = SubmissionPane(self.tabbed, self.running1, self.running2, run_params)
self.tabbed.AddPage(self.submissions, "Submit Job")
self.tabbed.AddPage(self.running1, "Running Jobs 1")
self.tabbed.AddPage(self.running2, "Running Jobs 2")
self.Show()
#---
class SubmissionPane(wx.Panel):
def __init__(self, parent, running_pane1, running_pane2, run_params):
wx.Panel.__init__(self, parent)
...............
class RunningPane1(wx.Panel):
def __init__(self, parent, run_params):
wx.Panel.__init__(self, parent, -1)
self.running_log1 = wx.TextCtrl(self, -1, pos=(5, 5), size=(875,605),
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
def StartWork(self, indir1, the_queue_pane, runningMode, showBox1, tvtitle):
..............
wx.CallAfter(self.running_log1.AppendText, line)
wx.CallAfter(RunningPane2.running_log2.AppendText, line)
..............
#---
class RunningPane2(wx.Panel):
def __init__(self, parent, run_params):
wx.Panel.__init__(self, parent, -1)
self.running_log2 = wx.TextCtrl(self, -1, pos=(5, 5), size=(875,605),
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
self.Show()