0

我正在尝试设置我的 GUI,以便框架自动适合内容,它似乎正在做的是另一种方式并将内容适合框架。

这是常见的吗?我能做些什么吗?

这是我的代码:

    panel = wx.Panel(self)

    mainSizer = wx.BoxSizer(wx.VERTICAL)

    usernameSizer = wx.BoxSizer(wx.HORIZONTAL)
    self.usernameBox = wx.TextCtrl(panel, size=(200,35))
    usernameText = wx.StaticText(panel, label="\tUsername")
    usernameSizer.Add(self.usernameBox, 1)
    usernameSizer.Add(usernameText, 1)

    passwordSizer = wx.BoxSizer(wx.HORIZONTAL)
    self.passwordBox = wx.TextCtrl(panel, size=(200,35))
    passwordText = wx.StaticText(panel, label="\tPassword")
    passwordSizer.Add(self.passwordBox, 1)
    passwordSizer.Add(passwordText, 1)  

    urlSizer = wx.BoxSizer(wx.HORIZONTAL)
    self.urlBox = wx.TextCtrl(panel, size=(200,35))
    urlText = wx.StaticText(panel, label='\tFirst chapter URL')
    urlSizer.Add(self.urlBox, 1)
    urlSizer.Add(urlText, 1)

    formatSizer = wx.BoxSizer(wx.HORIZONTAL)
    self.formatBox = wx.ComboBox(panel, value='', choices=self.fileFormat, style=wx.CB_READONLY, name="combo", size=(200,35))
    formatText = wx.StaticText(panel, label="\tFile format")
    formatSizer.Add(self.formatBox, 1)
    formatSizer.Add(formatText, 1)


    downSizer = wx.BoxSizer(wx.HORIZONTAL)
    downButton = wx.Button(panel, label='Download', size=(161,50))
    font = wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
    downButton.SetFont(font)
    downSizer.Add(downButton, 0, wx.LEFT | wx.TOP, 20)

    mainSizer.Add(usernameSizer, 0, wx.LEFT | wx.TOP, 20)
    mainSizer.Add(passwordSizer, 0, wx.LEFT | wx.TOP, 20)
    mainSizer.Add(urlSizer, 0, wx.LEFT | wx.TOP, 20)
    mainSizer.Add(formatSizer, 0, wx.LEFT | wx.TOP, 20)
    mainSizer.Add(downSizer, 0, wx.ALIGN_CENTER | wx.BOTTOM, 20)

    panel.SetSizer(mainSizer)

    panel.Fit()

    self.Show(True)

这将所有小部件聚集在顶部,这几乎是我想要的,但下方有很多空白空间,但我不想要。

如果在将大小调整器添加到 mainSizer 时将比例值设置为 1 而不是 0,它会占用整个帧,我怎样才能让帧收缩到内容?

4

1 回答 1

1

我认为如果你想实现这一点,你需要在每次向 a 中添加一些东西时将比例设置为 0 wxSizer

也可能有帮助的是添加wx.EXPAND标签,所以它会是这样的:

sizer.Add(other_panel, 0, wx.EXPAND | wx.WATERVER, border_size)

从理论上讲,这样做后,您的面板应该采用其组件的大小。还要确保在拥有面板的窗口/对话框上调用 Fit。有时(但很少)调用Layoutsizer 上的函数会有所帮助。

于 2013-09-23T06:39:13.293 回答