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使用更加便利等。这个布局在具有规则化的布局中有着很好的作用。