Python如何用wx模块创建文本编辑器


Posted in Python onJune 07, 2020

用Python的wx模块创建文本编辑器的方法:

1、设置按钮的位置

import wx
app = wx.App()
win = wx.Frame(None,title = "编辑器", size=(410,335))
win.Show()
loadButton = wx.Button(win, label = '打开',pos = (225,5),size = (80,25))
saveButton = wx.Button(win, label = '保存',pos = (315,5),size = (80,25))
filename = wx.TextCtrl(win, pos = (5,5),size = (210,25))
contents = wx.TextCtrl(win, pos = (5,35),size = (390,260), style = wx.TE_MULTILINE | wx.HSCROLL)
app.MainLoop()

2、对窗口内容进行布局

import wx
app = wx.App()
win = wx.Frame(None,title = "编辑器", size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg, label = '打开')
saveButton = wx.Button(bkg, label = '保存')
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE | wx.HSCROLL)
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)
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()

3、添加事件处理函数

在GUI术语中,用户执行的动作(比如 点击按钮)叫做事件。我们需要让程序注意这些事件并且作出反应。

假设写了一个负责打开文件的函数,并将其命令为load ,然后就可以像下面这样将函数作为loadButton的事件处理函数:

loadButton.Bind(wx.EVT_BUTTON, load)

让我们来完成剩下的工作,现在需要的就是两个事件处理函数:load(打开)和save(保存)。当事件被调用时,它会收到一个事件对象作为它唯一的参数,其中包括发生了什么事情的信息,但是在这里可以忽略这方法的事情,因为程序只关心点击时发生的事情。

def load(event):
  file = open(filename.GetValue())
  contents.SetValue(file.read())
  file.close()

文件名使用filename对象GetValue方法获取。为了将文本引入文本区,只要使用contents.SetValue即可。

save函数和load类似,除了它需要写入(‘w'),以及用于文件处理部分的write方法,GetValue用于从文本区获得信息。

def save(event):
  file = open(filename.GetValue(),'w')
  file.write(contents.GetValue())
  file.close()

完整代码如下:

import wx
def load(event):
  file = open(filename.GetValue())
  contents.SetValue(file.read())
  file.close()
def save(event):
  file = open(filename.GetValue(),'w')
  file.write(contents.GetValue())
  file.close()
app = wx.App()
win = wx.Frame(None,title = "编辑器", size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg, label = '打开')
loadButton.Bind(wx.EVT_BUTTON,load)
saveButton = wx.Button(bkg, label = '保存')
saveButton.Bind(wx.EVT_BUTTON,save)
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE | wx.HSCROLL)
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)
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如何用wx模块创建文本编辑器

内容扩展:

我们来创建一个文本编辑器,功能要求如下:

* 它可以打开给定文件名的文本文件;

* 它可以编辑文件文件

* 它可以保存文本文件

* 它可以正常退出程序

设置按钮位置

import wx
app = wx.App()
win = wx.Frame(None,title = "编辑器", size=(410,335))
win.Show()

loadButton = wx.Button(win, label = '打开',pos = (225,5),size = (80,25))
saveButton = wx.Button(win, label = '保存',pos = (315,5),size = (80,25))
filename = wx.TextCtrl(win, pos = (5,5),size = (210,25))
contents = wx.TextCtrl(win, pos = (5,35),size = (390,260), style = wx.TE_MULTILINE | wx.HSCROLL)
app.MainLoop()

这里可能需要注意的是,控件(按钮,输入框)的位置和尺寸,位置和尺寸都包括一对数值:位置包括x 和y坐标,而尺寸包括宽和高。

代码比较简单,按钮控件(打开、保存)就不解释了。需要注意的是文本控件,默认的文本框(text field)就是一行可编译的文本,没有滚动条,为了创建文本区(text area)只要使用style参数调整风格,style 参数的值实际上是个整数,但不用直接指定,可以使用按位或运算符OR联合了wx.TE_MULTILINE来获取多行文件区,以及 wx.HSCROLL来获取水平滚动条。

到此这篇关于Python如何用wx模块创建文本编辑器的文章就介绍到这了,更多相关Python的wx模块创建文本编辑器方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python读写ini配置文件方法实例分析
Jun 30 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
Python从函数参数类型引出元组实例分析
May 28 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
Python的in,is和id函数代码实例
Apr 18 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 Python
python如何查看网页代码
Jun 07 #Python
python中对二维列表中一维列表的调用方法
Jun 07 #Python
python学习将数据写入文件并保存方法
Jun 07 #Python
详解python如何引用包package
Jun 07 #Python
Python如何输出整数
Jun 07 #Python
Django form表单与请求的生命周期步骤详解
Jun 07 #Python
python ETL工具 pyetl
Jun 07 #Python
You might like
网络资源
2006/10/09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
Python psutil模块简单使用实例
2015/04/28 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python数据库小程序源代码
2019/09/15 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
毕业生就业推荐信范文
2013/12/01 职场文书
办公室人员先进事迹
2014/01/27 职场文书
社区服务活动总结
2014/05/07 职场文书
销售员试用期自我评价
2014/09/15 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
旷工检讨书大全
2015/08/15 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS
MySql数据库 查询时间序列间隔
2022/05/11 MySQL
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS