2016-04-04 90 views
0

我必須從HyperlinkCtrl()小部件切換到StaticText(),並且在某些條件下也可以反轉,或者爲wxPython中的某個特定字段調用不同的函數。如何將重新定義的wx小部件添加到已創建的盒子大小中?

但是佈局和sizer已經創建了字段列表,其中一個是我們之前說的HyperlinkCtrl()。所有的佈局和尺寸都保存在兩個獨立的函數中。

因此,通過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") 

隨着靜態文本創建了上述變化,但我無法投入篩分器,也從靜態文本轉換爲超鏈接無法正常工作。

請幫我解決這個問題。

回答

0

您應該從頭開始將兩個小部件添加到sizer中,但隱藏其中的一個。當你想切換時,隱藏另一個並顯示之前隱藏的那個。

+0

感謝您的答覆,你能給我舉個例子嗎? – Nithya

相關問題