如何将重新定义的wx小部件添加到已创建的box sizer中?

时间:2016-04-04 07:09:04

标签: wxpython wxwidgets

我必须从HyperlinkCtrl()小部件切换到StaticText(),并在某些条件下反转或在wxPython中为一个特定字段调用不同的函数。

但是布局和sizer已经创建了字段列表,其中一个是我们之前的HyperlinkCtrl()。所有布局和sizer都保存在两个单独的函数中。

因此,切换由HyperlinkCtrl()的Disabled()Enabled()函数实现。

问题是在使用StaticText()重新定义后,无法将其添加到box sizer中。

def createLayout(self):

         #some code 
         ........
         self.Author = wx.HyperlinkCtrl(self, -1, "", "~")
         self.Author.SetFont(self.fontSmall)
         ..........

def createSizers(self):
        ............
        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        ...............
        self.DetailsSizer = wx.BoxSizer(wx.VERTICAL)
        self.DetailsSizer.Add(self.Author, 0, wx.ALIGN_LEFT)
        .................
def changeFunc(self):
        if true
          self.hyperFunc()
        else
          self.statisFunc()

要禁用和启用小部件,我执行了以下操作。

def staticFunc(self):
    # Author & URL

    self.Author.Hide()
    if self.Author.IsEnabled():
        self.Author = wx.StaticText(self, -1, "N/A")
        self.Author.SetFont(self.fontSmall)
        self.Author.Disable()
    self.Author.Show()

def hyperFunc(self):
     self.Author = wx.HyperlinkCtrl(self, -1, "", "")
     self.Author.Enable()
     self.Author.SetURL("name")

通过上面的更改,创建了staticText但是我无法将其放入sizer中,并且从staticText切换到超链接也无法正常工作。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您应该从头开始将两个小部件添加到sizer,但隐藏其中一个。当你想要切换时,隐藏另一个并显示之前隐藏的那个。