2012-08-02 94 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