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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
详解python中xlrd包的安装与处理Excel表格
Dec 16 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python3解释器知识点总结
Feb 19 Python
Python获取数据库数据并保存在excel表格中的方法
Jun 12 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python3 中sorted() 函数的用法
Mar 24 Python
结束运行python的方法
Jun 16 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
杏林同学录(九)
2006/10/09 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
PHP实现简单的计算器
2020/08/28 PHP
cookie中的path与domain属性详解
2013/12/18 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
js实现筛选功能
2020/11/24 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
python调用fortran模块
2016/04/08 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
继承权公证书
2014/04/09 职场文书
离婚协议书怎么写
2015/01/26 职场文书
世界文化遗产导游词
2019/08/07 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python