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++代码,非常好用。如下图
评论区