2016-04-04 2 views
0

私は、HyperlinkCtrl()ウィジェットからStaticText()に切り替える必要があります。また、wxPythonの特定のフィールドのために、いくつかの条件のもとでやり直したり、別の関数を呼び出す必要があります。再定義されたwxウィジェットを既に作成されたボックスサイザーに追加するには?

しかし、レイアウトとサイザーはすでにフィールドのリストで作成されており、その1つはHyperlinkCtrl()の前にあります。すべてのレイアウトとサイザーは2つの別々の機能に保持されています。

したがって、HyperlinkCtrl()のDisabled()Enabled()の機能によって切り替えが行われます。

問題はStaticText()で再定義した後で、これをボックスサイザーに追加できませんでした。

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

ウィジェットを最初からサイザーに追加する必要がありますが、どちらか一方を非表示にする必要があります。切り替えるときは、もう一方を非表示にして、前に隠されたものを表示します。

+0

返信いただきありがとうございます。私にいくつかの例を教えていただけますか? – Nithya

関連する問題