Как исправить компоновку макета в wxpython - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь отобразить настройки соединения, которые требуются для ssh-соединения, я использую wx.BoxSizer для организации макета, к сожалению, макет не работает и складывает все элементы в верхнем левом углу. (Пока я не изменю размер окна, масштабируя / максимизируя).

Я уже пытался использовать: self.Update (), self.Refresh () и self.Layout () после того, как я вызвал метод self.Show (True), но у меня это не работает. Если я удаляю раздел «Настройка строки состояния» и «Создание меню», это работает, но они мне нужны.

import wx
import connectionSettingsProperties
import connectionSettings
from pubsub import pub

class MyFrame(wx.Frame):
    def __init__(self,parent,title):
        wx.Frame.__init__(self, parent, title = title, size = (1600,800))
        panel = wx.Panel(self)

        #statusbar setup
        self.CreateStatusBar()

        # menu setup
        filemenu = wx.Menu()

        # creating the menubar
        menuBar = wx.MenuBar()
        menuBar.Append(filemenu,"Menu")
        self.SetMenuBar(menuBar)

        #connectionstatus init
        self.ipLabel = wx.StaticText(panel, label = 'ip:')
        self.usernameLabel = wx.StaticText(panel, label = 'username:')

        #building layout
        vboxMain = wx.BoxSizer(wx.VERTICAL)
        hboxConnection = wx.BoxSizer(wx.HORIZONTAL)
        hboxConnection.Add(self.ipLabel)
        hboxConnection.Add(self.usernameLabel)
        vboxMain.Add(hboxConnection)
        panel.SetSizer(vboxMain)

        #show content
        self.Show(True)

app = wx.App(False)
frame = MyFrame(None, 'MyApp')
app.MainLoop()

это то, что он изначально показывает: https://imgur.com/VQebA9t и вот как это должно выглядеть: https://imgur.com/60V1tcF Второй результат отображается, как только я масштабирую окно.

1 Ответ

0 голосов
/ 02 июля 2019

Вы действительно близко.Вы должны только добавить строку:

vboxMain.Fit(panel)

ниже строки:

panel.SetSizer(vboxMain)
...