2012-08-02 90 views
1

我有一個wxPanel。我怎樣才能讓用戶調整大小?使用拖放調整大小欄?使用戶可調整大小的wxPanel

我想知道我需要的小部件是什麼。

謝謝。

+0

我想你想分離器...拿在wxDemo看看他們有一個很好的例子 – 2012-08-02 14:52:03

回答

3

您可以使用wx.SplitterWindow使框架中的面板可調整大小(即將框架分成兩個可調整大小的子窗口)。

如果你想要的是能夠調整其他面板網格面板的大小,那麼你可以使用wx.lib.resizewidget。這提供了一個拖放類似欄,但不能移動小工具的位置只調整它的大小。

,你既有的例子在wxpython docs and demos package

在這裏,你可以選擇使用SplitterWindow一個例子(代碼很冗長,因爲與wxglade自動生成,可如果你想簡化。):

import wx 

class MyFrame(wx.Frame): 
    def __init__(self, *args, **kwds): 
     kwds["style"] = wx.DEFAULT_FRAME_STYLE 
     wx.Frame.__init__(self, *args, **kwds) 
     self.window_1 = wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_3D | wx.SP_BORDER) 
     self.window_1_pane_1 = wx.Panel(self.window_1, wx.ID_ANY) 
     self.window_1_pane_2 = wx.Panel(self.window_1, wx.ID_ANY) 

     self.__set_properties() 
     self.__do_layout() 

    def __set_properties(self): 
     self.SetTitle("frame_1") 
     self.window_1_pane_1.SetBackgroundColour(wx.Colour(255, 255, 0)) 
     self.window_1_pane_2.SetBackgroundColour(wx.Colour(50, 153, 204)) 

    def __do_layout(self): 
     sizer_1 = wx.BoxSizer(wx.VERTICAL) 
     self.window_1.SplitVertically(self.window_1_pane_1, self.window_1_pane_2) 
     sizer_1.Add(self.window_1, 1, wx.EXPAND, 0) 
     self.SetSizer(sizer_1) 
     sizer_1.Fit(self) 
     self.Layout() 

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

enter image description here

1

面板全部自動浮動?聽起來不太可能!如果您更詳細地描述了您正在做的事情以及未按預期工作的情況,那麼回答此問題會容易得多。

一般來說,面板是作爲一個框架的孩子創建的。如果面板是框架的唯一子框架,那麼它將隨着框架自動調整大小。否則,你將不得不自己處理resize事件。

你到目前爲止嘗試過什麼?

+0

好一點。我忘了提及我有兩個面板。 – 2012-08-02 15:06:25

+0

@ user996056請編輯您的問題,以便我們可以瞭解您想要做什麼。 '我有一個wxPanel'是錯誤的和誤導性的。這也有助於描述你到目前爲止所嘗試的內容。 – ravenspoint 2012-08-02 15:09:45