【问题标题】:How to move a button in WxFormBuilder如何在 WxFormBuilder 中移动按钮
【发布时间】:2014-02-08 22:45:08
【问题描述】:

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

【问题讨论】:

    标签: button user-interface wxformbuilder


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-11-19
        • 1970-01-01
        • 2015-10-20
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多