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实现保证只能运行一个脚本实例
Jun 24 Python
python实现简单socket通信的方法
Apr 19 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
python 两种方法删除空文件夹
Sep 29 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的错误信息
2006/10/09 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
Javascript 继承机制实例
2009/08/12 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python运算符重载用法实例分析
2015/06/01 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Django 实现下载文件功能的示例
2018/03/06 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
python实现快递价格查询系统
2020/03/03 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
个人自我剖析材料
2014/09/30 职场文书
助学感谢信范文
2015/01/21 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
使用Python拟合函数曲线
2022/04/14 Python