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冒泡排序算法的实现代码
Nov 21 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
如何实现删除numpy.array中的行或列
May 08 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
python学生管理系统的实现
Apr 05 Python
Django中的JWT身份验证的实现
May 07 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 读取文件乱码问题
2010/02/20 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
jQuery实现折线图的方法
2015/02/28 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
儿童编程python入门
2018/05/08 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
中医药大学毕业生自荐信
2013/11/08 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
护士自我鉴定总结
2014/03/24 职场文书
初中学校军训方案
2014/05/09 职场文书
教师个人年终总结
2015/02/11 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书