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超简单解决约瑟夫环问题
May 12 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
基于python requests库中的代理实例讲解
May 07 Python
Python 实现网页自动截图的示例讲解
May 17 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
在双python下设置python3为默认的方法
Oct 31 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
python 负数取模运算实例
Jun 03 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
通过实例了解python property属性
2019/11/01 Python
python自定义函数def的应用详解
2020/06/03 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
写给学生的新学期寄语
2014/01/18 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
Django实现drf搜索过滤和排序过滤
2021/06/21 Python