Как переместить кнопку в WxFormBuilder
Я играл с WxFormBuilder, и я застрял в том, как выполнить простую задачу размещения кнопки в разных местах на экране. Теперь наиболее интуитивно понятным было бы перетаскивание, но WxFormBuilder (к сожалению) не имеет этой функции.
2 ответа
Чтобы переместить / расположить кнопку во фрейме wxFormBuilder, вам нужно разместить кнопку в разных типах размеров, как показано на вкладке "Макет". Затем используйте свойства wxVERTICAL или wxHORIZONTAL nizer для определения ориентации кнопки.
~ Все в wxFormBuilder чаще всего помещается в блок (sizer), который является родительским или дочерним блоком. Нет перетащить сюда!
~ Я обычно рисую / делаю набросок своего макета на бумаге перед началом работы с wxFormBuilder.
~ Вы также можете использовать "проставки", чтобы расположить кнопку за пустым / пустым пространством.
Свойства "Выровнять и растянуть" всегда удобны при расположении кнопок
~ Этот процесс применяется к любому виджету / элементу управления.
Проверьте "Дерево объектов" на изображении ниже, чтобы помочь вам расположить кнопки в разных местах на рамке.
Код 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()
Я бы посоветовал вам взглянуть на использование классификаторов. Это гораздо лучший способ размещения различных компонентов на форме. Если вы хотите переместить кнопку, вам нужно будет указать позицию в коде вручную