【问题标题】:Make a wxPanel resizable by the user让用户调整 wxPanel 的大小
【发布时间】:2012-08-02 14:50:05
【问题描述】:

我有一个 wxPanel。我怎样才能让它由用户调整大小?使用拖放调整大小栏?

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

谢谢。

【问题讨论】:

  • 我想你想要一个分离器......看看 wxDemo 他们有一个很好的例子

标签: python wxpython wxwidgets


【解决方案1】:

您可以使用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()

【讨论】:

    【解决方案2】:

    一个独立浮动的面板?听起来不太可能!如果您更详细地描述您在做什么,以及哪些不符合您的预期,那么回答这个问题会容易得多。

    通常,面板是作为框架的子级创建的。如果面板是框架的唯一子级,那么它将与框架一起自动调整大小。否则您将不得不自己处理调整大小事件。

    到目前为止,您尝试了什么?

    【讨论】:

    • @user996056 请编辑您的问题,以便我们了解您想要做什么。 '我有一个 wxPanel' 是错误的并且具有误导性。这也有助于描述您迄今为止所做的尝试。
    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2016-04-14
    • 2014-11-26
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多