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 08 Python
python中的对象拷贝示例 python引用传递
Jan 23 Python
python中zip和unzip数据的方法
May 27 Python
详解在Python的Django框架中创建模板库的方法
Jul 20 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
python如何将两个txt文件内容合并
Oct 18 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
用Python进行栅格数据的分区统计和批量提取
May 27 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实现ping
2006/10/09 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
html下载本地
2006/06/19 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Python zip()函数用法实例分析
2018/03/17 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
企业车辆管理制度
2014/01/24 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
入学证明
2015/06/23 职场文书
小学班级管理心得体会
2016/01/07 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python