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实现telnet服务器的方法
Jul 10 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
django 简单实现登录验证给你
Nov 06 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
python flappy bird小游戏分步实现流程
Feb 15 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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的Yii框架中日志的相关配置及使用
2015/12/08 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
vue递归获取父元素的元素实例
2020/08/07 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python回调函数用法实例分析
2015/05/09 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python字符串及文本模式方法详解
2020/09/10 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
医生自荐信
2013/10/11 职场文书
学习两会精神心得范文
2014/03/17 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
五一活动标语
2014/06/30 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
预备党员个人总结
2015/02/14 职场文书
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript