Попытка исправить положение кнопок - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь изменить расположение кнопок слева направо вверху.

1) Вот код, приведенный ниже.

import wx 

class Example(wx.Frame): 

    def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title, size = (200,300)) 

      self.InitUI() 
      self.Centre() 
      self.Show()

    def InitUI(self): 
      p = wx.Panel(self) 
      vbox = wx.BoxSizer(wx.VERTICAL) 


      for label in range(8):
         b2 = wx.Button(p, label =str(label)) 
         vbox.Add(b2,0,wx.VERTICAL) 
         hbox = wx.BoxSizer(wx.HORIZONTAL) 

      for label in range(8):
         b3 = wx.Button(p, label = "Btn3") 
         vbox.Add(b3,0,wx.RIGHT) 
         hbox = wx.BoxSizer(wx.HORIZONTAL) 

      p.SetSizer(vbox) 

app = wx.App() 
Example(None, title = 'BoxSizer demo') 
app.MainLoop()

Вывод выглядит так

  1. 1 бат3
  2. 2 бат3
  3. 3 бат3
  4. 4 бат3

Здесь (1, 2,3,4) - кнопки с btn3 (кнопки)

Спасибо за продвижение.

1 Ответ

0 голосов
/ 21 ноября 2018

Я предполагаю, что вы хотите, чтобы кнопки btn3 находились в вертикальной линии справа от других кнопок.
Существуют различные варианты, GridSizer и FlexGridSizer приходят на ум, но в вашем коде у вас уже естьпредставил горизонтальный BoxSizer, но не использовал его, поэтому следующий код будет использовать его.
Загрузите вертикальные боксайзеры, а затем загрузите их в горизонтальный классификатор.

import wx

class Example(wx.Frame):

    def __init__(self, parent, title):
      super(Example, self).__init__(parent, title = title, size = (200,300))

      self.InitUI()
      self.Centre()
      self.Show()

    def InitUI(self):
      p = wx.Panel(self)
      vbox1 = wx.BoxSizer(wx.VERTICAL)
      vbox2 = wx.BoxSizer(wx.VERTICAL)
      hbox = wx.BoxSizer(wx.HORIZONTAL)

      for label in range(8):
         b2 = wx.Button(p, label =str(label))
         vbox1.Add(b2,0,0)

      for label in range(8):
         b3 = wx.Button(p, label = "Btn3")
         vbox2.Add(b3,0,0)

      hbox.Add(vbox1)
      hbox.Add(vbox2)

      p.SetSizer(hbox)

app = wx.App()
Example(None, title = 'BoxSizer demo')
app.MainLoop()

enter image description here

...