【问题标题】:Can't edit TextCtrl built from other function than __init__ (wxPython)无法编辑从 __init__ (wxPython) 以外的其他函数构建的 TextCtrl
【发布时间】:2012-12-25 00:02:49
【问题描述】:

我在编辑、输入甚至单击 TextCtrl 或实际上任何其他未在 init 函数中构建的小部件时遇到问题。

假设我有这个:

class firstpanel(wx.Panel):

def __init__(self, parent):
    wx.Panel.__init__(self, parent=parent)

....

def receivetext(self, event):
    panel = wx.Panel(self,size=wx.Size(850,650))
    wx.TextCtrl(self, -1, self.textfromsomewhereelse, (365, 145))

我确实在我的 GUI 框架中看到了具有适当值的 TextCtrl,但我无法修改它。 这就像我在它上面有一个不让我通过的隐形层。

我说我错过了一些非常基本的东西,这很尴尬。

【问题讨论】:

    标签: python function wxpython textctrl


    【解决方案1】:

    receivetext 中,您创建了wx.TextCtrl 的一个实例,但您没有将它添加到panel。您也不保留对实例的引用,因此它会被垃圾收集器立即销毁。

    class MyFrame1 (wx.Frame):
        def __init__(self):
            super(MyFrame1, self).__init__()
            fluid_sizer = wx.BoxSizer(wx.HORIZONTAL)
            self.m_textCtrl1 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
            fluid_sizer.Add(self.m_textCtrl1, 0, wx.ALL, 5)
            self.SetSizer(fluid_sizer)
            self.Layout()
    

    该示例显示创建了一个wx.BoxSizer 和一个wx.TextCtrl。对文本控件的引用存储为self.m_textCtrl。然后将文本控件添加到 sizer 中,使其可见。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      相关资源
      最近更新 更多