我必须从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切换到超链接也无法正常工作。
请帮我解决这个问题。
答案 0 :(得分:0)
您应该从头开始将两个小部件添加到sizer,但隐藏其中一个。当你想要切换时,隐藏另一个并显示之前隐藏的那个。