看了一点python的基础教程,忍不住手就痒了,找来一个题目练一下喽。

题目:编写一个功能简单的记事本。

编写记事本就要用到GUI的功能,最常用的当然是wxpython,那么我们就用这个来写一个记事本的程序吧。

首先来一些基本的功能调用,先熟悉一下它的基本构成:

import wx

app=wx.App()

win=wx.Frame(None)

win.Show()

app.MainLoop()

我们来分析一下这个程序的语句:

import wx是引入了wxpython模块,wx.App()生成了一个应用程序,wx.Frame(None)生成了一个窗口的框架,用win.Show()显示出来,最后对于程序不断循环。

这样就编写了一个比较简单的窗口程序了,不过这个窗口什么也没有,现在慢慢来将其内容充实起来吧。

先把这个空白的窗口加上一些标题(title)

import wx

app=wx.App()

win=wx.Frame(None,title='简单记事本')

win.Show()

app.MainLoop()

我们所需要的记事本编辑器肯定得有两个功能,第一能打开文件,第二能保存文件,那么至少需要这两个按钮,一个是打开,一个是保存,按钮的生成用wx.Button()实现。

按钮的位置大小等等的确定需要各种参数,那么怎么修改上面的程序呢?接着往下来:

import wx

app=wx.App()

win=wx.Frame(None,title='简单记事本'size=(410,335))

loadbutton=wx.Button(win,label='open',pos=(5,5),size=(80,25))

savebutton=wx.Button(win,label='save',pos=(90,5),size=(80,25))

win.Show()

app.MainLoop()

仅有按钮还是不行的,还得有打开目录的编辑区域和文本的编辑区域,就得用到wx.TextCtrl()这个函数来,继续修改以上程序:

import wx

app=wx.App()

win=wx.Frame(None,title='简单记事本',size=(410,335))

fileload=wx.TextCtrl(win,pos=(5,5),size=(230,25))

contents=wx.TextCtrl(win,pos=(5,35),size=(400,300))

loadbutton=wx.Button(win,label='open',pos=(240,5),size=(80,25))

savebutton=wx.Button(win,label='save',pos=(325,5),size=(80,25))

win.Show()

app.MainLoop()

一个简单的模型就出来了吧,哈哈。但是这个记事本在拖拉时其编辑内容却不能随拖拉的变化而变化,而是保持原来的形状完全不变,而且文件编辑区也不能随意多行处理,要想其变化,还得对其修改:

import wx

app=wx.App()

win=wx.Frame(None,title='简单记事本',size=(410,335))

bg=wx.Panel(win)

fileload=wx.TextCtrl(bg)

contents=wx.TextCtrl(bg,style=wx.TE_MULTILINE|wx.HSCROLL)

loadbutton=wx.Button(bg,label='open')

savebutton=wx.Button(bg,label='save')

level=wx.BoxSizer()

level.Add(fileload,proportion=1,flag=wx.EXPAND)

level.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)

level.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)

down=wx.BoxSizer(wx.VERTICAL)

down.Add(level,proportion=0,flag=wx.EXPAND|wx.ALL,border=5)

down.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=5)

bg.SetSizer(down)

win.Show()

app.MainLoop()

用这个程序写出来的记事本基本上只是个框架而已,他没有打开与保存文件的功能,那么怎么才能实现打开与保存文件的功能呢?这里用到了wx.Bind()函数,所以前面的程序可以将其改写成

import wx

app=wx.App()

win=wx.Frame(None,title='简单记事本',size=(410,335))

bg=wx.Panel(win)

def load(event):

a=open(fileload.GetValue())

contents.SetValue(a.read())

a.close()

def save(event):

c=open(fileload.GetValue(),'w')

c.write(contents.GetValue())

c.close()

fileload=wx.TextCtrl(bg)

contents=wx.TextCtrl(bg,style=wx.TE_MULTILINE|wx.HSCROLL)

loadbutton=wx.Button(bg,label='open')

savebutton=wx.Button(bg,label='save')

loadbutton.Bind(wx.EVT_BUTTON,load)

savebutton.Bind(wx.EVT_BUTTON,save)

level=wx.BoxSizer()

level.Add(fileload,proportion=1,flag=wx.EXPAND)

level.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)

level.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)

down=wx.BoxSizer(wx.VERTICAL)

down.Add(level,proportion=0,flag=wx.EXPAND|wx.ALL,border=5)

down.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=5)

bg.SetSizer(down)

win.Show()

app.MainLoop()

这个程序就可以完成了,当然你也可以在自定义函数load()中修改,使其变为:当没有此文件时创建一个,然后对其编辑。这里就不多说了,你可以自己实践啊,哈哈。

总结:通过这个简单记事本编辑器的编写,我们基本上掌握了一些简单的图形编辑功能,那么,很显然我们还可以编写一个简单计算器,当然你要是想要编写一个很复杂的科学计算器也不是不可能实现不了的。

python语言的记事本在哪_用python语言编写一个简单记事本相关推荐

  1. java swing 简单计算器_用java swing编写一个简单的计算器

    用java swing实现的一个简单的计算器:一些swing的基础应用. 注释里有详解,直接上代码: package 简易计算器; import java.awt.BorderLayout; impo ...

  2. java语言编程三角形图形_编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用......

    导航:网站首页 > 编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用... 编程题:编写程序输入三角形的3条边长,计算并输出... 求助 ...

  3. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  4. python音频转文字腾讯_使用Python三步完成文本到语音的转换

    重磅干货,第一时间送达 一篇文章带你了解文本到语音转换步骤 在<这篇文章>中,我们有简单提到"文本语音转换"的相关内容,本文将继续讲述其详细实现步骤. 这里小编将介绍文 ...

  5. python cs开发框架_用Python编写一个简单的CS架构后门的方法

    用Python编写一个简单的CS架构后门的方法 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...

  6. python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?

    全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...

  7. Python爬取网站用户手机号_利用python爬取慕课网站上面课程

    1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部的课程名称,课程简介,课程URL ,课程图片URL,课程人数(由于动态渲染 ...

  8. python不属于字符串的是_【python cookbook】python过滤字符串中不属于指定集合的字符...

    1 #!/usr/bin/python 2 #-*- coding: utf-8 -*- 3 4 #过滤字符串中不属于指定集合的字符 5 6 importstring7 8 #生成所有字符的可复用的字 ...

  9. python 描述符有什么用_介绍python描述符的意义

    你也许经常会听到「描述符」这个概念,但是由于大多数的程序员很少会使用到他,所以可能你并不太清楚了解它的原理,python视频教程栏目将详细介绍 推荐(免费):python视频教程 但是如果你想自己的事 ...

最新文章

  1. java thread isalive,《Java多线程编程核心技术(第2版)》 —1.4 isAlive()方法
  2. 本地虚拟机的linux文件,连接虚拟机上传本地文件 打包Linux的文件 下载的本地
  3. ner pytorch project code
  4. 判断身份证号是否合法
  5. springboot整合liquibase入门实例
  6. AI 芯片让你升级智能手机,IoT计算智能革命爆发
  7. log 的 debug()、 error()、 info()方法的区别
  8. html和css如何制作小球,[网页设计]使用CSS3动画模拟实现小球自由落体效果
  9. WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
  10. Go 触发 GC 的时机有哪些?能手动触发吗?
  11. 二叉搜索树的2层结点统计_植树节,程序猿种的那些树
  12. mysql中如何将几个没有关系的结果集放在一起
  13. PHP加密解密函数之Crypt
  14. ndk中杀线程的办法
  15. rootkit后门检测工具rkhunter
  16. 智能网联汽车 自动驾驶功能场地试验方法及要求
  17. gitlab发邮件收不到
  18. python之捕鱼问题
  19. 3D激光SLAM点云地图pcd转导航可用的2D栅格地图
  20. 数据压缩技术简史---关于实时数据压缩的基础知识

热门文章

  1. 社会网络分析-python_体育社 - 运动让生活更有乐趣 - 俱乐部活动在线管理系统...
  2. How to check number of Active connections in SQL server?
  3. 分布式消息队列 NSQ 和 Kafka 对比
  4. UI自动化:单元测试框架
  5. 求树中某结点的父结点(长子-兄弟表示法)
  6. Ubuntu 安装arm-linux-gcc交叉编译工具
  7. 【信息系统项目管理师】第5章-项目范围管理 知识点详细整理
  8. python开发安卓盒子_Python盒子:模块、包和程序
  9. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.解决办法
  10. Gstreamer入门之Helloworld(一)