【问题标题】:AppendText to wx.TextCtrl in another Tabbed Panel - wxpython在另一个选项卡式面板中将文本附加到 wx.TextCtrl - wxpython
【发布时间】:2014-03-16 05:28:27
【问题描述】:

我有一个带有 3 个选项卡式面板的应用。我目前正在同一面板wx.CallAfter(self.running_log1.AppendText, line) 中将 AppendText 发送到 wx.TextCtrl,但也想在另一个选项卡式面板 RunningPane2、wx.CallAfter(RunningPane2.running_log2.AppendText, line) 中将 AppendText 发送到 wx.TextCtrl,但我无法正常工作。我该怎么做,或者我可以完全取消 RunningPane2 类并从 RunningPane1 面板创建self.running_log2 = wx.TextCtrl

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()

【问题讨论】:

    标签: python wxpython wx.textctrl


    【解决方案1】:

    它不会以这种方式工作:RunningPane2.running_log2

    你应该得到running_log2的实例,你可以将MainWindow实例传递给RunningPanel,然后你可以从中得到running_log2

    class MainWindow(wx.Frame):
        def __init__(self, parent, id, title):
            ...........
    
            self.running1 = RunningPane1(self.tabbed, self, run_params)
    
    
    
    
    class RunningPane1(wx.Panel):
        def __init__(self, parent, frame, run_params):
            wx.Panel.__init__(self, parent, -1)
            ..............
            self.frame = frame
    
    
    
        def StartWork(self, indir1, the_queue_pane, runningMode, showBox1, tvtitle):
            ..............
            wx.CallAfter(self.running_log1.AppendText, line)
    
            wx.CallAfter(self.frame.running2.running_log2.AppendText, line)
    

    【讨论】:

    • 那么应该在哪里 'self.running_log2 = wx.TextCtrl(self, -1, pos=(5, 5), size=(875,605), style = wx.TE_MULTILINE|wx.TE_READONLY|wx .HSCROLL)' 去吗?
    • @speedyrazor 对不起,应该是self.frame.running2.running_log2
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2023-01-04
    • 2012-01-11
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多