我有一个wxPanel。如何让用户调整大小?使用拖放调整大小栏?
我想知道我需要的小部件是什么。
谢谢。
答案 0 :(得分: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()
答案 1 :(得分:1)
一个独立的小组浮动?听起来不太可能!如果您更详细地描述了您正在做什么,以及什么不能按预期工作,那么回答这个问题要容易得多。
通常,面板是作为框架的子项创建的。如果面板是框架的唯一子项,则它将与框架一起自动调整大小。否则你将不得不自己处理调整大小事件。
到目前为止你尝试了什么?