2016-04-04 4 views
0

Мне нужно переключиться с виджета HyperlinkCtrl() в StaticText(), а также вернуться в некоторых условиях или вызвать разные функции для одного конкретного поля в wxPython.Как добавить переопределенные виджеты wx в уже созданные полевые sizer?

Но макет и сизеры уже созданы со списком полей, а один из них является нашим до указанного гиперссылкиCtrl(). Все макеты и sizers хранятся в двух отдельных функциях.

Таким образом, коммутация осуществляется с помощью Disabled() и Enabled() функций HyperlinkCtrl().

Проблема возникает после переопределения с помощью 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() 

Чтобы отключить и включить виджеты, я сделал следующий mothod.

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, но я не мог в классификаторе, а также переход от StaticText в гиперссылке не работает должным образом.

Пожалуйста, помогите мне в этом.

ответ

0

Вы должны добавить оба виджета в sizer с самого начала, но скрыть один из них. Когда вы хотите переключиться, скройте другой и покажите тот, который был скрыт раньше.

+0

благодарит за ответ, и можете ли вы дать мне пример PLS? – Nithya