wxPython:包含两个静态文本的垂直 BoxSizer;另一个单独的水平 BoxSizer 包含按钮,保持重叠在顶角

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

我正在使用

wxPython
开发 GUI 桌面应用程序项目。在启动屏幕上,我需要并排显示两个面板。左边的面板将显示一张图片,左边的面板将显示一些静态文本和按钮。我的问题是右侧面板的问题。

我想在右侧面板上显示公司名称、地址和登录/新用户按钮。我定义了一个 VERTICAL

BoxSizer
(
vbox_org_name_address
) 来保存两个
StaticText
——公司名称和地址。在其下方,水平
BoxSizer
包含两个按钮。垂直
BoxSizer
(名为
main_sizer
)将所有这些内容保存在面板内:一个 BoxSizer 包含静态文本,另一个包含两个按钮。

以下是所需的布局:

但我得到的是这样的:

我已经多次调整代码,但无法按照我的意愿安排布局。下面是我的代码:

class HomePanel(wx.Panel):
    def __init__(self, parent):
        super().__init__(parent)

        # define the panel          
        right_panel = wx.Panel(self, style=wx.BORDER_SIMPLE)
    
        # define the sizers
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        vbox_org_name_address = wx.BoxSizer(wx.VERTICAL)       
        hbox_buttons = wx.BoxSizer(wx.HORIZONTAL)
    
        # define the StaticTexts
        org_name = wx.StaticText(right_panel, label='ABC Pharmaceuticals Wholesale')
        address = '66B, Tower Street...Contact: +91 1234 8899'
        address_label = wx.StaticText(right_panel, label=address)
        
        # add the company name and address to the sizer
        vbox_org_name_address.Add(org_name, 0, wx.BOTTOM | wx.ALIGN_LEFT, 5)
        vbox_org_name_address.Add(address_label, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_LEFT, 5)
       
        # define the buttons
        login_btn = wx.Button(right_panel, label="Login")
        add_user_btn = wx.Button(right_panel, label="Add User")

        # add the buttons to the sizer
        hbox_buttons.Add(login_btn, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
        hbox_buttons.Add(add_user_btn, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
       
        # add the two sizers to main_sizer
        main_sizer.Add(vbox_org_name_address, 0, wx.EXPAND | wx.ALL, 10)
        main_sizer.Add(hbox_buttons, 0, wx.EXPAND | wx.ALL, 3)

        self.SetAutoLayout(True)
        self.Layout()
python-3.x user-interface wxpython
1个回答
0
投票

我错过了将

main_sizer
添加到面板。 就是这个:

# add the two sizers to main_sizer
main_sizer.Add(vbox_org_name_address, 0, wx.EXPAND | wx.ALL, 10)
main_sizer.Add(hbox_buttons, 0, wx.EXPAND | wx.ALL, 3)

right_panel.SetSizer(main_sizer)
self.SetAutoLayout(True)
self.Layout()
© www.soinside.com 2019 - 2024. All rights reserved.