GUI界面操作-实现简单的记事本
wxPython编写界面程序的基本流程:
1、import wx #导入wxPython的包
2、class App(wx.App) #子类化一个应用程序类
3、def onInit(self) #定义应用程序类的初始化方法
4、app = App() #实例化一个应用程序类
5、app.MainLoop() #进入这个应用程序的主事件循环
下面是一个例子:
import wx #——对应第一步
class App(wx.App): #——对应第二步
def OnInit(self): #——对应第三步
frame = wx.Frame(parent = None, id = -1, title = 'Bare')
frame.Show() #默认参数为True,即frame.Show(True)
return True #这里一定要写return,否则就会一闪而过;return False的话会一闪而过,然后提示退出;因此要能够自主关闭,看到程序框架的话,必须得return True
app = App() #——对应第四步
app.MainLoop() #——对应第五步
下面是一个实例(python基础教程第二版12章),但是不是以class的面向对象的形式来展现的,基本涵盖了一个可响应的活的应用程序的几个组成部分:
1、导入wxPython的包
2、定义一会需要用到的响应函数load和save
3、实例化一个应用程序类:如果app =wx.App()不生效或者有问题的话,可以使用app = wx.PySimpleApp()语句
4、定义frame
5、定义panel,将所需要的按钮、文本框等放到panel中
6、智能布局:使用BoxSizer() ,采用相对布局,将布局纳入到panel中
7、定义响应绑定事件(使用wxPython本身的响应函数,将具体需要操作的事件定义在事件函数中,绑定后即可通过相应操作,做出需要的响应)
8、show出Frame
9、进入app应用程序的主事件循环
# -*-coding:gb2312-*- #Function:第12章-图形用户界面,写一个记事本的简化程序
#Author:LiXia
#Version:V 1.0.0.1 import wx 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() app = wx.App()
win = wx.Frame(None, id = -1, title = 'Simple Editor', 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()
最新文章
- MSP430单片机的两种SPI总线实现方式
- Scrum Meeting 2-20151202
- 学习mongo系列(二) 新建数据库,collection ,insert(),save()
- 为何在font-family属性中设置多个值
- Android判断App是否在前台运行(转)
- api接口通信安全性
- Linux下设置静态IP和获取动态IP的方法
- hdu 4706 Children's Day 2013年ICPC热身赛A题 模拟
- html js文字左右滚动插件
- svn to git
- Akka(33): Http:Marshalling,to Json
- spring cloud 配置zuul实用
- python发送短信验证码
- laravel session使用 转自http://blog.csdn.net/angle_hearts/article/details/53923782
- 1.Spring MVC详解
- dip vs di vs ioc
- bzoj 2120 数颜色 (带修莫队)
- LeetCode 944 Delete Columns to Make Sorted 解题报告
- js的原型prototype究竟是什么?
- PHP自学,第一阶段,基础学习