如何在wxPython对话框中正确展开小部件?

问题描述 投票:0回答:1

我试图使最小的wxPython GUI工作,但是到目前为止,我未能达到期望的结果。我想要的是在第一行中扩展文本输入小部件,以使其填充对话框/框架的宽度。我希望输入框变宽,以使其右边框与(较宽)第二行中按钮的右边框对齐。

Sample Screenshot

我以为这是添加到sizer中时wx.EXPAND标志的作用,但显然我做错了。这是我的示例代码:

import wx

class MyApp(wx.Frame):
    def __init__(self):
        super(MyApp, self).__init__(None, title="wxPython Sizers", style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)

        self.panel = wx.Panel(self)
        self.main_sizer = wx.BoxSizer(wx.VERTICAL)

        # First line, should expand it's width to fit the second line
        panel_sizer = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        text = wx.StaticText(self.panel, label="Short label:")
        hbox.Add(text, flag=wx.ALIGN_CENTER_VERTICAL)
        numtext = wx.TextCtrl(self.panel)
        hbox.Add(numtext, flag=wx.LEFT | wx.EXPAND, border=10)
        panel_sizer.Add(hbox)

        # The second, wider line
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        text = wx.StaticText(self.panel, label="This is a long label:")
        hbox.Add(text, flag=wx.ALIGN_CENTER_VERTICAL)
        img_folder_button = wx.Button(self.panel, label="Button")
        hbox.Add(img_folder_button, flag=wx.LEFT, border=10)
        panel_sizer.Add(hbox, flag=wx.TOP, border=15)

        # We need only this one sizer for the panel
        self.panel.SetSizer(panel_sizer)

        # Set final dialog layout
        self.main_sizer.Add(self.panel, proportion=1, flag=wx.ALL | wx.EXPAND, border=15)
        self.SetSizer(self.main_sizer)
        self.Layout()
        self.Fit()
        self.Center()
        self.Show()

if __name__ == "__main__":
    wxapp = wx.App()
    myApp = MyApp()
    wxapp.MainLoop()
python python-3.x wxpython
1个回答
0
投票

您正在水平框大小调整器内扩展数字文本。没错但是,您还必须在垂直框大小调整器内扩展水平框大小调整器。

© www.soinside.com 2019 - 2024. All rights reserved.