侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 166 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

wxPython桌面应用开发系列[3]-界面设计

Kevin Meng
2023-04-19 / 0 评论 / 0 点赞 / 37 阅读 / 0 字

wxPython界面布局元素

wxPython的界面元素布局可以通过绝对定位和Sizer定位两种方式进行,绝对定位即在添加界面元素时通过position属性来设置元素的位置。如:

# 这里元组pos(100,10)即绝对定位
button = wx.Button(self, label='Button', pos=(100, 10))

第二种定位方式是通过Sizer定位。wxPython提供了以下Sizer类用于布局和定位。

  • wx.BoxSizer

  • wx.StaticBoxSizer

  • wx.GridSizer

  • wx.FlexGridSizer

  • wx.WrapSizer

下面的示例就通过BoxSizer进行界面的定位

class MyPanel(wx.Panel):

    def __init__(self, parent):
        super().__init__(parent)

        button = wx.Button(self, label='Press Me')

        main_sizer = wx.BoxSizer(wx.HORIZONTAL)
        main_sizer.Add(button, proportion=0, 
                       flag=wx.ALL | wx.CENTER, 
                       border=5)
        self.SetSizer(main_sizer)


class MyFrame(wx.Frame):

    def __init__(self):
        super().__init__(None, title='Hello World')
        panel = MyPanel(self)
        self.Show()”
if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    app.MainLoop()

至于每个Sizer是怎么使用的,可以参考官方的文档。例如BoxSizer文档https://docs.wxpython.org/wx.BoxSizer.html

界面设计软件wxFormBuilder

上面我们主要通过代码来添加界面元素和进行定位,这样很不直观,幸好有开源的工具wxFormBuilder可以帮助我们完成这个工作,下载地址https://sourceforge.net/projects/wxformbuilder/

wxFormBuilder可以可视化进行界面设计并生成相应的python或c++代码,非常好用。如下图

0

评论区