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负载均衡的简单实现方法
Feb 04 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
flask框架中勾子函数的使用详解
Aug 01 Python
python 实现分组求和与分组累加求和代码
May 18 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
Python csv文件记录流程代码解析
Jul 16 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 Python
Python Selenium异常处理的实例分析
Feb 28 Python
Python list列表删除元素的4种方法
Nov 01 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php mail to 配置详解
2014/01/16 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
波兰补充商店:Muscle Power
2018/10/29 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
班级入场式解说词
2014/02/01 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Python实现byte转integer
2021/06/03 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电