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 22 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
Python绘制热力图示例
Sep 27 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
Python2与Python3的区别点整理
Dec 12 Python
python中执行smtplib失败的处理方法
Jul 01 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
Python中生成ndarray实例讲解
Feb 22 Python
python实现大文本文件分割成多个小文件
Apr 20 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使之能同时支持GIF和JPEG
2006/10/09 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
什么是会话Bean
2015/05/14 面试题
社团成立邀请函
2014/01/08 职场文书
年度考核评语
2014/01/19 职场文书
群众路线个人整改方案
2014/10/25 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
房产电话营销开场白
2015/05/29 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
angular异步验证器防抖实例详解
2022/03/31 Javascript