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用ConfigObj读写配置文件的实现代码
Mar 04 Python
Python里隐藏的“禅”
Jun 16 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
利用python开发app实战的方法
Jul 09 Python
Django展示可视化图表的多种方式
Apr 08 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
Jun 21 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中读取和写入WORD文档的代码
2008/04/09 PHP
学习php笔记 字符串处理
2010/10/19 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
JavaScript File分段上传
2016/03/10 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
flask框架路由常用定义方式总结
2019/07/23 Python
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
行政助理工作职责范本
2014/03/04 职场文书
葬礼司仪主持词
2014/03/31 职场文书
学生操行评语大全
2014/04/24 职场文书
应届生求职信
2014/05/31 职场文书
财务负责人岗位职责
2015/02/03 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
2019 入党申请书范文
2019/07/10 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL