wxPython的gridSizer布局

CSDN博客:皮乾东
知乎:Htrying
微博:Htring的微博
微信公众号:自然语言处理爱好者(ID:NLP_lover)

0 环境准备

wxPython坏境的安装(wxPython当前也支持Python3.X版本),在已经配置好的python下,在dos中:pip install wxpython即可,本程序是在win10系统环境下实现,如图:
这里写图片描述

1 代码详解

import wx
#自定义一个窗口类MyFrame
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None,title="grid布局",size=(300,300))
        self.Center() #设置窗口居中
        #放一个面板,用于布局其他控件
        panel=wx.Panel(parent=self)
        #创建按钮
        btn1=wx.Button(panel,label="1")
        btn2=wx.Button(panel,label="2")
        btn3=wx.Button(panel,label="3")
        btn4=wx.Button(panel,label="4")
        btn5=wx.Button(panel,label="5")
        btn6=wx.Button(panel,label="6")
        btn7=wx.Button(panel,label="7")
        btn8=wx.Button(panel,label="8")
        btn9=wx.Button(panel,label="9")
        #创建grid,垂直缝隙,水平缝隙
        gridsizer=wx.GridSizer(cols=3, rows=3, vgap=10,hgap=5)
        gridsizer.AddMany([(btn1,0,wx.EXPAND),(btn2,0,wx.EXPAND),(btn3,0,wx.EXPAND),(btn4,0,wx.EXPAND),
            (btn5,0,wx.EXPAND),(btn6,0,wx.EXPAND),(btn7,0,wx.EXPAND),(btn8,0,wx.EXPAND),(btn9,0,wx.EXPAND)
            ])
        #将控件添加到布局管理器中
        #gridsizer.Add(btn1,0,wx.EXPAND)
        #gridsizer.Add(btn2,0,wx.EXPAND)
        #gridsizer.Add(btn3,0,wx.EXPAND)
        #gridsizer.Add(btn4,0,wx.EXPAND)
        #gridsizer.Add(btn5,0,wx.EXPAND)
        #gridsizer.Add(btn6,0,wx.EXPAND)
        #gridsizer.Add(btn7,0,wx.EXPAND)
        #gridsizer.Add(btn8,0,wx.EXPAND)
        #gridsizer.Add(btn9,0,wx.EXPAND)
        #绑定函数
        btn1.Bind(wx.EVT_BUTTON,self.on_click)
        btn2.Bind(wx.EVT_BUTTON,self.on_click)
        btn3.Bind(wx.EVT_BUTTON,self.on_click)
        btn4.Bind(wx.EVT_BUTTON,self.on_click)
        btn5.Bind(wx.EVT_BUTTON,self.on_click)
        btn6.Bind(wx.EVT_BUTTON,self.on_click)
        btn7.Bind(wx.EVT_BUTTON,self.on_click)
        btn8.Bind(wx.EVT_BUTTON,self.on_click)
        btn9.Bind(wx.EVT_BUTTON,self.on_click)
        #指定当前面板布局管理器
        panel.SetSizer(gridsizer)

    #按钮事件函数
    def on_click(self,event):
        #获取事件源的id
        source_id=event.GetId()
        print(source_id)
#自定以一个应用程序类
class App(wx.App):
    def OnInit(self):
        #创建窗口对象
        frame=MyFrame()
        frame.Show()
        return True
    def OnExit(self):
        print("应用程序退出")
        return 0

if __name__=='__main__':
    app=App()#创建自定以对象App
    app.MainLoop()#进入事件主循环

2 效果展示

这里写图片描述

3 使用总结

wxpython是一个比较轻量级的python界面设计包,相比于pyqt更小,比自带的Tkinter使用更加便利等。这个布局在具有规则化的布局中有着很好的作用。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/meiqi0538/article/details/80742012