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进行稳定可靠的文件操作详解
Dec 31 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
基于python的Tkinter编写登陆注册界面
Jun 30 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
Python3 修改默认环境的方法
Feb 16 Python
Python占用的内存优化教程
Jul 28 Python
python多维数组分位数的求取方式
Mar 03 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
Python魔术方法专题
Jun 19 Python
Python基于正则表达式实现计算器功能
Jul 13 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
测试php函数的方法
2013/11/13 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
python静态方法实例
2015/01/14 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
Django model update的多种用法介绍
2020/03/28 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
大学校园活动策划书
2014/02/04 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
交通安全教育心得体会
2016/01/15 职场文书
Django操作cookie的实现
2021/05/26 Python
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL