我一直在玩WxFormBuilder,我被困在如何在屏幕上的不同位置定位按钮这一简单任务上。现在最直观的事情是拖放,但WxFormBuilder (遗憾的是)没有这个功能。
发布于 2016-03-05 18:24:54
要在wxFormBuilder框架中移动/定位按钮,必须在“Layout”选项卡中找到不同大小类型的按钮。然后使用wxVERTICAL或wxHORIZONTAL属性N来控制按钮的方向。
~ wxFormBuilder中的所有内容大多数都放在一个框(大小)中,这个框要么是父框,要么是子框。这里不能拖放!
~我通常在开始使用wxFormBuilder之前在纸上绘制/草图我的布局。
~您也可以使用“间隔”将按钮定位在空白/空白区域之后。
~“Align and Stretch”属性在定位按钮时总是很方便的
~此过程适用于任何小工具/控件。
检查下图中的“对象树”,指导您在框架上的不同位置定位按钮。
图片的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()
发布于 2014-07-03 20:25:03
我建议您考虑一下使用sizers。这是在表单上布置各种组件的一种更好的方式。如果要移动按钮,则必须在代码中手动指定位置
https://stackoverflow.com/questions/21652736
复制相似问题