2010-12-28 15 views
0

wxPythonツールキットのCollapsiblePaneコンポーネントを使用しようとしました。パネルに2つのチェックボックスを直接追加し、パネルに配置されたCollapsiblePaneの下に2つのチェックボックスを追加します。私の問題は、折りたたみ可能なペインとその下のコンポーネントがマウスイベントに反応しないことです。つまり、ペインを展開/折りたたんだり、CollapsiblePaneの下のコンポーネントとやり取りできません。CollapsiblePaneはマウスでは展開/折りたたみしません。

以下はサンプルコードです。 collapsiblePaneの下のチェックボックスを切り替えしようと、彼らはあなたがself.panelオブジェクトを作成したが、あなたのフレームの子としてあなたの折りたたみ可能なペインを作成し

import wx 
import sys 
class MyFrame(wx.Frame): 

    def __init__(self):   
     wx.Frame.__init__(self, None, -1, "My Frame") # , size=(300,300) 

     self.panel = wx.Panel(self) 

     sizer = wx.FlexGridSizer(rows=2, cols=2, hgap=5, vgap=5) 
     CB1 = wx.CheckBox(self.panel, -1, "dene-1") 
     CB2 = wx.CheckBox(self.panel, -1, "dene-2") 

     CP = wx.CollapsiblePane(self, -1, label="TITLE", style=wx.CP_DEFAULT_STYLE|wx.CP_NO_TLW_RESIZE) 
     self.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnPaneChanged, CP)  
     win = CP.GetPane()   
     pansizer = wx.BoxSizer(wx.VERTICAL)  
     cb1 = wx.CheckBox(win, -1, "enable 1") 
     cb2 = wx.CheckBox(win, -1, "enable 2")   
     pansizer.Add(cb1, 0, wx.GROW | wx.ALL ) 
     pansizer.Add(cb2, 0, wx.GROW | wx.ALL)   
     win.SetSizer(pansizer)   
     pansizer.SetSizeHints(win) 
     CP.Expand() 

     sizer.Add(CB1, 0, wx.ALL) 
     sizer.Add(CB2, 0, wx.ALL)   
     sizer.Add(CP, 0, wx.RIGHT|wx.LEFT|wx.EXPAND, 5)    
     self.panel.SetSizer(sizer) 
     self.panel.Fit() 

    def OnPaneChanged(self, evt): 
     # redo the layout 
     self.Layout()   


if __name__=="__main__": 
    app = wx.App() 
    frame = MyFrame() 
    frame.Show(True) 
    app.MainLoop() 

答えて

0

反応しません。 ウィンドウの更新方法を変更する必要があります。最初にサイザーはレイアウトしなければならないので、パネルに合わせてウィンドウに合わせなければなりません。コードは以下に掲載されています。フレームのサイズを変更して、ペインの拡大と縮小を確認しました。 アプリ= wx.App() フレーム=をMyFrame() frame.Show(TRUE) app.MainLoop()

def __init__(self):   
    wx.Frame.__init__(self, None, -1, "My Frame") # , size=(300,300) 

    self.panel = wx.Panel(self) 

    sizer = wx.FlexGridSizer(rows=2, cols=2, hgap=5, vgap=5) 
    CB1 = wx.CheckBox(self.panel, -1, "dene-1") 
    CB2 = wx.CheckBox(self.panel, -1, "dene-2") 

    CP = wx.CollapsiblePane(self.panel, -1, label="TITLE", style=wx.CP_DEFAULT_STYLE|wx.CP_NO_TLW_RESIZE) 
    CP.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnPaneChanged)  
    win = CP.GetPane()   
    pansizer = wx.BoxSizer(wx.VERTICAL)  
    cb1 = wx.CheckBox(win, -1, "enable 1") 
    cb2 = wx.CheckBox(win, -1, "enable 2")   
    pansizer.Add(cb1, 0, wx.GROW | wx.ALL ) 
    pansizer.Add(cb2, 0, wx.GROW | wx.ALL)   
    win.SetSizer(pansizer)   
    pansizer.SetSizeHints(win) 
    CP.Collapse() 

    sizer.Add(CB1, 0, wx.ALL) 
    sizer.Add(CB2, 0, wx.ALL)   
    sizer.Add(CP, 0, wx.RIGHT|wx.LEFT|wx.EXPAND, 5)    
    self.panel.SetSizerAndFit(sizer) 
    self.Fit() 

def OnPaneChanged(self, evt): 
    # redo the layout 
    self.panel.GetSizer().Layout() 
    self.panel.Fit() 
    self.Fit() 

== "メイン" IF

関連する問題