21. Python脚本学习笔记二十一图形化界面
来源:互联网 发布:fl软件下载 编辑:程序博客网 时间:2024/05/17 21:59
21. Python脚本学习笔记二十一图形化界面
本篇名言:“错过了晨曦,你可以欣赏暮霭;错过了春花,你可以接纳秋实;错过了太阳,你可以仰望星月;错过了昨天,你可以拥抱今天!”
这么长时间我们居然一直面对枯燥乏味的文本界面,有没有一种想换种口味的想法?
尝试下图形化界面的使用了。
当前Python支持GUI工具包,Python有很多GUI工具包,蛤蟆也不知道到底有没有标准的GUI工具包。既然如此,就使用最成熟的跨平台GUI工具包,wxPtyhon吧。
支持的GUI工具包如下:
1. 环境准备
从地址
http://www.wxpython.org/
下载对应版本的软件。
下载完毕后进行安装,双击下一步下一步即可(此处蛤蟆说的是windows)
然后输如以下内容进行测试:
>>>import wx
>>>app=wx.App()
>>>app.MainLoop()
没报错即OK。此处没有东西显示出来,这个不要紧,我们接下去会让他显示出来。
2. 窗口和组件
窗口也成为框架,是wx.Frame类的实例。
>>>import wx
>>>app=wx.App()
>>>win=wx.Frame(None)
>>>win.Show()
True
出现如下图:
2.1 按钮
增加Button,实现代码如下
importwx
app=wx.App()
win=wx.Frame(None)
btn=wx.Button(win)
win.Show()
app.MainLoop()
2.2 标签、标题和位置
importwx
app=wx.App()
win=wx.Frame(None,title="SimpleEditor")
loadButton=wx.Button(win,label='Open')
saveButton=wx.Button(win,label='Save')
win.Show()
app.MainLoop()
此处的两个按钮堆叠在了一起,所以只能看到一个,马上弄出来。稍等片刻。
如下代码:
importwx
app = wx.App()
win = wx.Frame(None, title="SimpleEditor", size=(410,335))
win.Show()
loadButton = wx.Button(win, label='Open', pos=(225,5), size=(80,25))
saveButton = wx.Button(win, label='Save',pos=(315,5), size=(80,25))
filename = wx.TextCtrl(win, pos=(5,5),size=(210,25))
contents = wx.TextCtrl(win, pos=(5,35), size=(390,260), style=wx.TE_MULTILINE | wx.HSCROLL)
app.MainLoop()
执行后如下,从界面上看已经很像一个程序了。
3. 智能布局
刚才手动布局我们对界面进行拉伸并不会自动扩展,可以使用尺寸器来解决这个问题。
尺寸器会管理组件的尺寸,只要将部件添加到尺寸器上,再加上一些布局参数,然后让尺寸器自己去管理父组件的尺寸。
代码如下:
importwx
app = wx.App()
win = wx.Frame(None, title="SimpleEditor", size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg, label='Open')
saveButton = wx.Button(bkg, label='Save')
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)
hbox = wx.BoxSizer()
hbox.Add(filename, proportion=1, flag=wx.EXPAND)
hbox.Add(loadButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(contents, proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM |wx.RIGHT, border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()
这样实现后,边框拖动后会自动进行扩展。
代码中使用了相对路径而不是绝对路径。
本次还创建了一个面板Panel。
其中wx.BoxSizer的构造函数带有一个决定是水平还是垂直的参数,默认是水平。
在水平的BoxSizer中有3个组件,不过proportion值不一样,三个组件的proportion的值分别是1,0,0。表示第一个组件获得水平扩展的全部额外空间,其他2个组件不变。
其中的Add函数中的flag参数表示组件是否会扩展到所分配的空间中。
4. 事件处理
用户执行的动作叫做事件。
需要将按钮这个事情,我们发送一个消息出去告诉程序我们进行了按钮操作。
很简单,如下即可实现。
loadButton.Bind(wx.EVT_BUTTON,load)
5. 完成事件处理
实现两个函数关于load和save的。
def load(event):
file = open(filename.GetValue())
contents.SetValue(file.read())
file.close()
def save(event):
file = open(filename.GetValue(), 'w')
file.write(contents.GetValue())
file.close()
最后全部实现如下:
importwx
defload(event):
file = open(filename.GetValue())
contents.SetValue(file.read())
file.close()
defsave(event):
file = open(filename.GetValue(),'w')
file.write(contents.GetValue())
file.close()
app = wx.App()
win = wx.Frame(None, title="SimpleEditor", size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg, label='Open')
loadButton.Bind(wx.EVT_BUTTON,load)
saveButton = wx.Button(bkg, label='Save')
saveButton.Bind(wx.EVT_BUTTON,save)
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE| wx.HSCROLL)
hbox = wx.BoxSizer()
hbox.Add(filename, proportion=1, flag=wx.EXPAND)
hbox.Add(loadButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton,proportion=0, flag=wx.LEFT, border=5)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(contents, proportion=1,
flag=wx.EXPAND | wx.LEFT | wx.BOTTOM |wx.RIGHT, border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()
在Windows中,可以使用.pyw作为文件名的结尾来保存GUI程序。
在开头所说,除了wxPython还有Tkinter,Jython,Swing等GUI工具的。
不过大多数GUI工具包的基础都一样的。
- 21. Python脚本学习笔记二十一图形化界面
- python 学习笔记(二十一)
- python核心编程学习笔记-2016-09-03-01-图形化用户界面编程(二)
- GTK+图形化应用程序开发学习笔记(二十一)—文本框构建
- GTK+图形化应用程序开发学习笔记(二十一)—文本框构建(3)
- GTK+图形化应用程序开发学习笔记(二十一)—文本框构建
- 11. Python脚本学习笔记十一函数与参数
- Python学习笔记(十一)-- Python函数(二)
- selenium+python:脚本学习笔记(二)
- JAVA学习二十一:GUI图形用户界面
- python学习(二十一)
- 25. Python脚本学习笔记二十五 CGI脚本
- 利用pyqt4写Python的图形化界面的笔记
- Allegro学习笔记二十一
- 学习笔记(二十一)
- python 学习笔记(十一)
- Python学习笔记(十一)
- python基础教程学习笔记十一
- Android实现密码隐藏显示
- xgboost 相比GBDT有什么区别
- 线性回归
- HBase 部分表无法写入数据的异常处理
- easyui 如何同时左右显示两个datagrid
- 21. Python脚本学习笔记二十一图形化界面
- 一些测试错题
- ajax,json学习笔记(五)总结
- UVA
- 22. Python脚本学习笔记二十二数据库支持
- 相机聚焦,相机截屏
- 机器学习十大算法原理总结
- 23. Python脚本学习笔记二十三网络编程
- 6.10 水仙花数