0

我在编辑、输入甚至单击 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,但我无法修改它。这就像我在它上面有一个不可见的层,不让我通过。

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

4

1 回答 1

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创建了 a 并且wx.TextCtrl. 对文本控件的引用存储为self.m_textCtrl. 然后将文本控件添加到 sizer 中,使其可见。

于 2013-01-10T21:04:14.310 回答