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之集合(set)
Sep 24 Python
python自带的http模块详解
Nov 06 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
python绘图模块matplotlib示例详解
Jul 26 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
PyQt5 QDockWidget控件应用详解
Aug 12 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中养成7个面向对象的好习惯
2010/07/17 PHP
PHP header函数分析详解
2011/08/06 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
window.location.hash 属性使用说明
2010/03/20 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
js html实现计算器功能
2018/11/13 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python异常处理操作实例详解
2018/05/10 Python
python实现点对点聊天程序
2018/07/28 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
房地产财务管理制度
2014/02/02 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS