2012-01-21 25 views
1

4つのメインタブがある場合は4つのタブが半分に分割され、左側に別のノートブック、右側に空のパネルが表示されますここに)。私のGUIの下の画像を見てください。 enter image description herewxPython:ノートブック内でのノートブックのサイズ変更

問題は、ノートブックの内容に合わせて左側のノートブックのサイズを変更できないことです。その内容をフィッティングすることによって、ノートブックの右手側を引っ張りたいのです。また、サイズを固定したままにしておきたいので、右隅をクリックしてドラッグしてウィンドウのサイズを変更すると、ノートブックのサイズは変更されません右側のパネルは、ユーザーがクリックしてドラッグしたかどうかによって大きくなります。以下

コード:

import wx 
import wx.grid 

class MyFrame1(wx.Frame): 
    def __init__(self, *args, **kwds): 
     # begin wxGlade: MyFrame1.__init__ 
     kwds["style"] = wx.DEFAULT_FRAME_STYLE 
     wx.Frame.__init__(self, *args, **kwds) 

     self.notebook_2 = wx.Notebook(self, -1, style=0) 
     self.notebook_2_pane_1 = wx.Panel(self.notebook_2, -1) 
     self.notebook_2_pane_2 = wx.Panel(self.notebook_2, -1) 
     self.notebook_2_pane_3 = wx.Panel(self.notebook_2, -1) 
     self.notebook_2_pane_4 = wx.Panel(self.notebook_2, -1) 
     self.notebook_3 = wx.Notebook(self.notebook_2_pane_1, -1, style=0) 
     self.notebook_3a = wx.Notebook(self.notebook_3, -1, style=0) 
     self.notebook_4 = wx.Notebook(self.notebook_3, -1, style=0) 
     self.panel_2a = wx.Panel(self.notebook_4, -1) 
     self.panel_2b = wx.Panel(self.notebook_3a, -1) 
     self.panel_2c = wx.Panel(self.notebook_3a, -1) 
     self.panel_2 = wx.Panel(self.notebook_3, -1) 
     self.panel_1 = wx.Panel(self.notebook_2_pane_1, -1) 
     self.grid_1 = wx.grid.Grid(self.panel_2a, -1, size=(1, 1)) 
     self.grid_2 = wx.grid.Grid(self.notebook_4, -1, size=(1, 1)) 
     self.bws_btn = wx.Button(self.panel_2b, -1, "Browse...") 
     self.tctrl = wx.TextCtrl(self.panel_2b, -1) 
     self.filename = wx.StaticText(self.panel_2b, -1, 'File:') 
     self.limitdata = wx.StaticText(self.panel_2b, -1, 'Limit Data:') 
     self.tctrl3 = wx.TextCtrl(self.panel_2b, -1, '200') 
     self.disp_sel_pk = wx.StaticText(self.panel_2c, -1, 'Display Selected Data') 
     self.toggle = wx.ToggleButton(self.panel_2c, 1, 'Toggle') 
     self.add_peak = wx.StaticText(self.panel_2c, -1, 'Add Data:') 
     self.add_peak_tctrl = wx.TextCtrl(self.panel_2c, -1, 'Test') 
     self.add_peak_btn = wx.Button(self.panel_2c, -1, "Add") 
     self.capt_click = wx.Button(self.panel_2c, -1, "Capture Mouse Click") 
     self.save_btn = wx.Button(self.panel_2a, -1, "Save as CSV file") 
     self.update_btn = wx.Button(self.panel_2a, -1, "Update") 

     self.__set_properties() 
     self.__do_layout() 
     # end wxGlade 

    def __set_properties(self): 
     # begin wxGlade: MyFrame1.__set_properties 
     self.SetTitle("frame_2") 
     self.SetMinSize((800, 600)) 

     self.grid_1.CreateGrid(30, 3) 
     self.grid_1.SetRowLabelSize(0) # hide the rows 
     self.grid_1.SetColLabelValue(0, "Data ID") 
     self.grid_1.SetColLabelValue(1, "Test") 
     self.grid_1.SetColLabelValue(2, "Frquency") 

     self.grid_2.CreateGrid(30, 13) 
     self.grid_2.SetRowLabelSize(30) 
     # end wxGlade 

    def __do_layout(self): 
     # begin wxGlade: MyFrame1.__do_layout 
     sizer_1 = wx.BoxSizer(wx.VERTICAL) 
     sizer_2 = wx.BoxSizer(wx.VERTICAL) 
     sizer_3 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_4 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_5 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_6 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_5.Add(self.filename, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_4.Add(self.bws_btn, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_4.Add(self.tctrl, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_6.Add(self.limitdata, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_6.Add(self.tctrl3, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_1.Add(sizer_5) 
     sizer_1.Add(sizer_4) 
     sizer_1.Add(sizer_6) 


     sizer_1a = wx.BoxSizer(wx.VERTICAL) 
     sizer_1a.Add(self.grid_1, 1, wx.EXPAND, 0) 
     sizer_1a.Add(self.save_btn, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_1a.Add(self.update_btn, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     self.panel_2b.SetSizer(sizer_1) 
     self.panel_2a.SetSizer(sizer_1a) 

     sizer_1b = wx.BoxSizer(wx.VERTICAL) 
     sizer_4a = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_5a = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_6a = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_7a = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_8a = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_4a.Add(self.disp_sel_pk, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_5a.Add(self.toggle, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_6a.Add(self.add_peak, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10)   
     sizer_7a.Add(self.add_peak_tctrl, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10)  
     sizer_7a.Add(self.add_peak_btn, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_8a.Add(self.capt_click, flag=wx.EXPAND | wx.RIGHT | wx.Left | wx.TOP | wx.BOTTOM, border=10) 
     sizer_1b.Add(sizer_4a) 
     sizer_1b.Add(sizer_5a) 
     sizer_1b.Add(sizer_6a) 
     sizer_1b.Add(sizer_7a) 
     sizer_1b.Add(sizer_8a) 
     self.panel_2c.SetSizer(sizer_1b) 

     self.notebook_3.AddPage(self.notebook_3a, "Inputs") 
     self.notebook_3.AddPage(self.notebook_4, "Results") 
     self.notebook_3a.AddPage(self.panel_2b, "Graph") 
     self.notebook_3a.AddPage(self.panel_2c, "Calc") 
     self.notebook_4.AddPage(self.panel_2a, "Info") 
     self.notebook_4.AddPage(self.grid_2, "Info2") 
     sizer_3.Add(self.notebook_3, 1, wx.EXPAND, 0) 
     sizer_3.Add(self.panel_1, 1, wx.EXPAND, 0) 

     self.notebook_2_pane_1.SetSizer(sizer_3) 
     self.notebook_2.AddPage(self.notebook_2_pane_1, "Setup") 
     self.notebook_2.AddPage(self.notebook_2_pane_2, "Optimisation") 
     self.notebook_2.AddPage(self.notebook_2_pane_3, "Algorithm") 
     self.notebook_2.AddPage(self.notebook_2_pane_4, "Data") 
     sizer_2.Add(self.notebook_2, 1, wx.EXPAND, 0) 
     self.SetSizer(sizer_2) 
     sizer_2.Fit(self) 
     self.Layout() 

if __name__ == "__main__": 
    app = wx.PySimpleApp(0) 
    wx.InitAllImageHandlers() 
    frame_2 = MyFrame1(None, -1, "") 
    app.SetTopWindow(frame_2) 
    frame_2.Show() 
    app.MainLoop() 

答えて

1

あなたが望むものを生産するために、コンテナサイザーに追加したときの割合をウィジェットに与えられているかを確認するには、このコードをチェックしてください。

#!/usr/bin/env python 
# -*- coding: iso-8859-15 -*- 
# generated by wxGlade HG on Sat Jan 21 15:09:27 2012 

import wx 

# begin wxGlade: extracode 
# end wxGlade 

class MyFrame(wx.Frame): 
    def __init__(self, *args, **kwds): 
     # begin wxGlade: MyFrame.__init__ 
     kwds["style"] = wx.DEFAULT_FRAME_STYLE 
     wx.Frame.__init__(self, *args, **kwds) 
     self.notebook_1 = wx.Notebook(self, -1, style=0) 
     self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1) 
     self.notebook_2 = wx.Notebook(self.notebook_1_pane_1, -1, style=0) 
     self.notebook_2_pane_1 = wx.Panel(self.notebook_2, -1) 
     self.button_1 = wx.Button(self.notebook_2_pane_1, -1, "button_1") 
     self.notebook_2_pane_2 = wx.Panel(self.notebook_2, -1) 
     self.panel_1 = wx.Panel(self.notebook_1_pane_1, -1) 
     self.notebook_1_pane_2 = wx.Panel(self.notebook_1, -1) 
     self.notebook_1_pane_3 = wx.Panel(self.notebook_1, -1) 

     self.__set_properties() 
     self.__do_layout() 
     # end wxGlade 

    def __set_properties(self): 
     # begin wxGlade: MyFrame.__set_properties 
     self.SetTitle("frame_1") 
     self.panel_1.SetBackgroundColour(wx.Colour(255, 255, 0)) 
     # end wxGlade 

    def __do_layout(self): 
     # begin wxGlade: MyFrame.__do_layout 
     sizer_1 = wx.BoxSizer(wx.VERTICAL) 
     sizer_2 = wx.BoxSizer(wx.HORIZONTAL) 
     sizer_3 = wx.BoxSizer(wx.VERTICAL) 
     sizer_3.Add(self.button_1, 0, 0, 0) 
     self.notebook_2_pane_1.SetSizer(sizer_3) 
     self.notebook_2.AddPage(self.notebook_2_pane_1, "tab1") 
     self.notebook_2.AddPage(self.notebook_2_pane_2, "tab2") 

     sizer_2.Add(self.notebook_2, 0, wx.EXPAND, 0)  #<- notebook,proportion 0 
     sizer_2.Add(self.panel_1, 1, wx.EXPAND, 0)   #<- panel, proportion 1 

     self.notebook_1_pane_1.SetSizer(sizer_2) 
     self.notebook_1.AddPage(self.notebook_1_pane_1, "tab1") 
     self.notebook_1.AddPage(self.notebook_1_pane_2, "tab2") 
     self.notebook_1.AddPage(self.notebook_1_pane_3, "tab3") 
     sizer_1.Add(self.notebook_1, 1, wx.EXPAND, 0) 
     self.SetSizer(sizer_1) 
     sizer_1.Fit(self) 
     self.Layout() 
     # end wxGlade 

# end of class MyFrame 


if __name__ == "__main__": 
    app = wx.PySimpleApp(0) 
    wx.InitAllImageHandlers() 
    frame_1 = MyFrame(None, -1, "") 
    app.SetTopWindow(frame_1) 
    frame_1.Show() 
    app.MainLoop() 

enter image description here

:1と0のノートブック割合(ウィジェットで使用可能なすべてのスペースの100%を占める)に
あなたはパネルの比率を設定する必要があります(その子ウィジェットを保持するために必要な最小限のスペースを占有)
関連する問題