我一直在玩 WxFormBuilder,但我一直坚持如何完成将按钮定位在屏幕不同位置的简单任务。现在最直观的事情是拖放,但 WxFormBuilder(遗憾的是)没有这个功能。
问问题
3184 次
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 回答