我正在使用
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()
我错过了将
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()