【问题标题】:Spacing/empty border for wxWidgetswxWidgets 的间距/空白边框
【发布时间】:2012-02-16 06:52:44
【问题描述】:

有没有什么东西可以用来在窗口边缘或使用 wxWidgets/wxPython 的组件之间添加空间?我想要一些东西来防止组件被挤压到窗口边框或彼此之间,类似于使用 Java Swing 的 EmptyBorder 或 Insets 可以完成的操作。 (我知道您可以使用一些尺寸器设置水平/垂直间隙,但我想要更灵活的东西。)

【问题讨论】:

  • 糟糕,我想我应该更仔细地查看一下 API 文档(或教程)。我仍然希望有一种方法可以为对象的每一侧指定不同的间距,而不必使用单独的垫片。
  • 为了方便以后查看此问题的任何人,这里是the documentation for Sizer.Add

标签: wxpython wxwidgets


【解决方案1】:

wxWidgets 提供的sizer 非常灵活。你确定你已经探索了他们所能做的一切吗?很难想象你可能需要他们无法处理的东西。请准确描述您的需求并发布您迄今为止尝试过的代码。

这是一个例子:

sizer->Add(new wxButton(this, -1, "Button with 20 pixel border all round"),
      0,  wxALL, 20);

这里是更多sizer选项的演示。 http://neume.sourceforge.net/sizerdemo/

如果您确实无法使用 sizer 来实现所需的功能,那么您可以通过将位置传递给小部件构造函数来显式地将每个小部件定位在您想要的任何位置。

wxPoint button_position( 50,50 );   // position button 50 pixel down and to right of top left
new wxButton(this, -1, "Button", button_position )

【讨论】:

    【解决方案2】:

    查看 Sizer 的 Add 方法中的边框参数。可以使用 flag 参数告诉它在哪里放置边框,例如 wx.ALL、wx.RIGHT、wx.LEFT、wx.TOP 等。

    这可用于在小部件周围和小部件之间放置空间。有时您可能想使用 sizer 的 AddSpacer 来添加空间。或者你可以这样做:

    mySizer.Add((20, 100))
    

    这样做是在 y 轴上的两个小部件之间放置 100 像素。您可能需要稍微尝试一下才能按照自己的方式获得它。

    另请参阅http://wiki.wxpython.org/GridSizerTutorialhttp://zetcode.com/wxpython/layout/

    【讨论】:

      【解决方案3】:

      我没有在 python 上尝试过,但在 c++ 中,接受的答案不起作用。 我不得不使用“AddSpaceer”作为:

      mySizer->AddSpacer((10, 10)); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 2018-11-28
        • 2014-01-10
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        相关资源
        最近更新 更多