2013-08-22 58 views
0

我似乎無法自己解決這個問題。wxpython面板不調整大小

我在我的wxPython框架中有3個小部件。兩個橫向堆疊,一個在它們下面。這裏是代碼:

import wx 
class MyFrame(wx.Frame): 
    def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, name="MyFrame"): 

     super(MyFrame, self).__init__(parent, id, title, pos, size, style, name) 

     panel1 = wx.Panel(self, -1) 

     boxV = wx.BoxSizer(wx.VERTICAL) 
     boxH1 = wx.BoxSizer(wx.HORIZONTAL) 
     boxH2 = wx.BoxSizer(wx.HORIZONTAL) 

     combo = wx.ComboBox(panel1, -1, size=(200, -1), choices=['A', 'B', 'C'], style=wx.CB_READONLY, value="Izberite COM vrata") 
     button = wx.Button(panel1, -1, size=(100, -1), label="Connect") 

     boxH1.Add(combo, 1, wx.ALL, 10); 
     boxH1.Add(button, 1, wx.ALL, 10) 

     boxH2.Add(wx.TextCtrl(self, -1), 1, wx.EXPAND) 

     boxV.Add(boxH1, 0) 
     boxV.Add(boxH2, 1, wx.EXPAND) 

     panel1.SetSizer(boxH1); 

     self.SetSizer(boxV); 

class MyApp(wx.App): 
    def OnInit(self): 
     self.frame = MyFrame(None, title="Simulation") 

     self.SetTopWindow(self.frame) 
     self.frame.Show() 
     return True 

if __name__ == '__main__': 
    app = MyApp(0) 
    app.MainLoop() 

正如我所看到的,這應該工作。它確實... ...有點...如果我手動設置面板的大小,它會擴大,它會看起來不錯。但它應該自動擴展。我已經做了截圖,看看有什麼我談論:

enter image description here

回答

0

你可以改變這些三線:

boxV.Add(boxH1, 0, wx.EXPAND) 
    boxV.Add(boxH2, 1, wx.EXPAND) 

    panel1.SetSizerAndFit(boxH1); 

本身SetSizerAndFit讓面板弄明白尺寸。

+0

我現在覺得很愚蠢。非常感謝你。 –

+0

不客氣! – darmat