python使用wxpython开发简单记事本的方法


Posted in Python onMay 20, 2015

本文实例讲述了python使用wxpython开发简单记事本的方法。分享给大家供大家参考。具体分析如下:

wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。

和Python语言与wxWidgetsGUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能。

wxPython是跨平台的。这意味着同一个程序可以不经修改地在多种平台上运行。现今支持的平台有:32位微软Windows操作系统、大多数Unix或类Unix系统、苹果MacOS X。

下面使用wxpython编写一个简单的记事本程序,可以打开本地文件,编辑,保存。

#!/usr/bin/python 
import wx 
def OnOpen(event): 
  """ 
  Load a file into the textField. 
  """ 
  dialog = wx.FileDialog(None,'Notepad',style = wx.OPEN) 
  if dialog.ShowModal() == wx.ID_OK: 
    filename.SetValue(dialog.GetPath()) 
    file = open(dialog.GetPath()) 
    contents.SetValue(file.read()) 
    file.close() 
  dialog.Destroy() 
def OnSave(event): 
  """ 
  Save text into the orignal file. 
  """ 
  if filename.GetValue() == '': 
    dialog = wx.FileDialog(None,'Notepad',style = wx.SAVE) 
    if dialog.ShowModal() == wx.ID_OK: 
      filename.SetValue(dialog.GetPath()) 
      file = open(dialog.GetPath(), 'w') 
      file.write(contents.GetValue()) 
      file.close() 
    dialog.Destory() 
  else: 
    file = open(filename.GetValue(), 'w') 
    file.write(contents.GetValue()) 
    file.close() 
app = wx.App() 
win = wx.Frame(None, title="Simple Editor", size=(600,400)) 
bkg = wx.Panel(win) 
# Define a 'load' button and its label, 
# bind to an button event with a function 'load' 
loadButton = wx.Button(bkg, label='Open') 
loadButton.Bind(wx.EVT_BUTTON, OnOpen) 
# Define a 'save' button and its label, 
# bind to an button event with a function 'save' 
saveButton = wx.Button(bkg, label='Save') 
saveButton.Bind(wx.EVT_BUTTON, OnSave) 
# Define a textBox for filename. 
filename = wx.TextCtrl(bkg) 
# Define a textBox for file contents. 
contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE | wx.HSCROLL) 
# Use sizer to set relative position of the components. 
# Horizontal layout 
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) 
# Vertical layout 
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()

运行效果如下图所示:

python使用wxpython开发简单记事本的方法

这个例子是《Python基础教程》中的一个例子,并做了一些修改。虽然完成了基本的记事本功能,但是界面略显简单,而且代码也没有很好地遵循面向对象编程原则。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
用Python给文本创立向量空间模型的教程
Apr 23 Python
Ubuntu下安装PyV8
Mar 13 Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 Python
Python使用shelve模块实现简单数据存储的方法
May 20 #Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
May 20 #Python
python获取指定目录下所有文件名列表的方法
May 20 #Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 #Python
Python使用matplotlib绘制动画的方法
May 20 #Python
Python中subprocess模块用法实例详解
May 20 #Python
python检测某个变量是否有定义的方法
May 20 #Python
You might like
php过滤XSS攻击的函数
2013/11/12 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
Angular封装表单控件及思想总结
2019/12/11 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python中return语句用法实例分析
2015/08/04 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
python学生信息管理系统(初级版)
2018/10/17 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
PHP面试题大全
2015/10/16 面试题
总经理办公室主任岗位职责
2013/11/12 职场文书
职工趣味运动会方案
2014/02/10 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
副处级干部考察材料
2014/05/17 职场文书
促销活动总结怎么写
2014/06/25 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
学校财务管理制度
2015/08/04 职场文书
高质量“欢迎词”
2019/04/03 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android