2

我一直在玩 WxFormBuilder,但我一直坚持如何完成将按钮定位在屏幕不同位置的简单任务。现在最直观的事情是拖放,但 WxFormBuilder(遗憾的是)没有这个功能。

4

2 回答 2

1

要在 wxFormBuilder 框架中移动/定位按钮,您必须将按钮堆叠在“布局”选项卡下的不同尺寸类型中。然后使用 sizer 的 wxVERTICAL 或 wxHORIZONTAL 属性来控制按钮的方向。

~ wxFormBuilder 中的所有东西大部分都放在一个盒子(sizer)中,它要么是父盒子,要么是子盒子。这里没有拖放!

~ 在开始使用 wxFormBuilder 之前,我通常会在纸上绘制/草绘我的布局。

~ 您也可以使用“spacer”将按钮定位在空白/空白区域后面。

~ “对齐和拉伸”属性在定位按钮时总是很方便

~ 这个过程适用于任何小部件/控件。

检查下图中的“对象树”,以指导您将按钮定位在框架上的不同位置。

在此处输入图像描述

图像的 wxPython 代码如下:-

import wx

class MyFrame1 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,317 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

        bSizer1 = wx.BoxSizer( wx.VERTICAL )

        bSizer2 = wx.BoxSizer( wx.HORIZONTAL )

        bSizer3 = wx.BoxSizer( wx.VERTICAL )

        self.m_button1 = wx.Button( self, wx.ID_ANY, u"Button1", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button1, 0, wx.ALL, 5 )

        self.m_button2 = wx.Button( self, wx.ID_ANY, u"Button2", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button2, 0, wx.ALL, 5 )

        self.m_button3 = wx.Button( self, wx.ID_ANY, u"Button3", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button3, 0, wx.ALL, 5 )

        self.m_button4 = wx.Button( self, wx.ID_ANY, u"Button4", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button4, 0, wx.ALL, 5 )

        self.m_button5 = wx.Button( self, wx.ID_ANY, u"Button5", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button5, 0, wx.ALL, 5 )

        self.m_button6 = wx.Button( self, wx.ID_ANY, u"Button6", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button6, 0, wx.ALL, 5 )

        self.m_button7 = wx.Button( self, wx.ID_ANY, u"Button7", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_button7, 0, wx.ALL, 5 )


        bSizer2.Add( bSizer3, 0, wx.EXPAND, 5 )

        bSizer4 = wx.BoxSizer( wx.VERTICAL )

        bSizer5 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_button8 = wx.Button( self, wx.ID_ANY, u"Button8", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer5.Add( self.m_button8, 0, wx.ALL, 5 )

        self.m_button9 = wx.Button( self, wx.ID_ANY, u"Button9", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer5.Add( self.m_button9, 0, wx.ALL, 5 )

        self.m_button10 = wx.Button( self, wx.ID_ANY, u"Button10", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer5.Add( self.m_button10, 0, wx.ALL, 5 )

        self.m_button11 = wx.Button( self, wx.ID_ANY, u"Button11", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer5.Add( self.m_button11, 0, wx.ALL, 5 )


        bSizer4.Add( bSizer5, 0, 0, 5 )

        gSizer6 = wx.GridSizer( 0, 2, 0, 0 )

        self.m_button12 = wx.Button( self, wx.ID_ANY, u"Button12", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.m_button12, 0, wx.ALL, 5 )

        self.m_button13 = wx.Button( self, wx.ID_ANY, u"Button13", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.m_button13, 0, wx.ALL, 5 )

        self.m_button14 = wx.Button( self, wx.ID_ANY, u"Button14", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.m_button14, 0, wx.ALL, 5 )

        self.m_button15 = wx.Button( self, wx.ID_ANY, u"Button15", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.m_button15, 0, wx.ALL, 5 )


        gSizer6.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )


        bSizer4.Add( gSizer6, 0, wx.ALIGN_CENTER_HORIZONTAL, 5 )

        gSizer7 = wx.GridSizer( 0, 2, 0, 0 )

        self.m_button16 = wx.Button( self, wx.ID_ANY, u"Button16", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer7.Add( self.m_button16, 0, wx.ALL, 5 )

        self.m_button17 = wx.Button( self, wx.ID_ANY, u"Button17", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer7.Add( self.m_button17, 0, wx.ALL, 5 )

        self.m_button18 = wx.Button( self, wx.ID_ANY, u"Button18", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer7.Add( self.m_button18, 0, wx.ALL, 5 )

        self.m_button19 = wx.Button( self, wx.ID_ANY, u"Button19", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer7.Add( self.m_button19, 0, wx.ALL, 5 )


        bSizer4.Add( gSizer7, 1, wx.ALIGN_CENTER_HORIZONTAL, 5 )


        bSizer2.Add( bSizer4, 1, wx.EXPAND, 5 )


        bSizer1.Add( bSizer2, 1, wx.EXPAND, 5 )

        bSizer8 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_button20 = wx.Button( self, wx.ID_ANY, u"Button20", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer8.Add( self.m_button20, 0, wx.ALL, 5 )

        self.m_button21 = wx.Button( self, wx.ID_ANY, u"Button21", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer8.Add( self.m_button21, 0, wx.ALL, 5 )

        self.m_button22 = wx.Button( self, wx.ID_ANY, u"Button22", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer8.Add( self.m_button22, 0, wx.ALL, 5 )

        self.m_button23 = wx.Button( self, wx.ID_ANY, u"Button23", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer8.Add( self.m_button23, 0, wx.ALL, 5 )

        self.m_button24 = wx.Button( self, wx.ID_ANY, u"Button24", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer8.Add( self.m_button24, 0, wx.ALL, 5 )


        bSizer1.Add( bSizer8, 1, wx.EXPAND, 5 )


        self.SetSizer( bSizer1 )
        self.Layout()

        self.Centre( wx.BOTH )

    def __del__( self ):
        pass


if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame1(None).Show()
    app.MainLoop()
于 2016-03-05T10:24:54.010 回答
0

我建议你看看使用sizer。这是在表单上布置各种组件的更好方法。如果要移动按钮,则必须手动指定代码中的位置

于 2014-07-03T12:25:02.983 回答