/前言/

不知从什么时候开始。小说开始掀起了一股浪潮,它让我们平日里的生活不在枯燥乏味,很多我们做不到的事情在小说里都能轻易实现。

今天我们要做的就是一个小说阅读器了,一个可以将你的文章中的字每隔多少秒显示一次的阅读器,就好比手机上的定时阅读一样,是不是很有趣?那么下面我们就来具体看看它是如何实现的吧。

/具体实现/

小说阅读器的话,当然界面是少不了的,下面我们开始编写界面。

1、首先导入我们需要用到的包

importtimefrom tkinterimportmessageboximporttkinter as tfrom tkinterimportttkfrom tkinterimportfiledialogfrom tkinterimportsimpledialog

2、编写主界面

classgui:def__init__(self):self.root=t.Tk()self.root.title('小说阅读器V1.0')#窗口名称self.root.geometry("700x700")#设置窗口大小self.root.wm_attributes('-topmost',1)#窗口置顶self.root.wm_minsize(140,170)# 设置窗口最小化大小self.root.wm_maxsize(1440,2800)# 设置窗口最大化大小self.root.resizable(width=False, height=True)# 设置窗口宽度不可变,高度可变self.te=t.Text(self.root,width=60,height=40)#多行文本框self.b1= t.Button(self.root, text='打开文件',font =("宋体",10,'bold'),command=self.open_file)self.cb=ttk.Combobox(self.root, width=12)#下拉列表框self.b2=t.Button(self.root,text='清空内容',command=self.clean)#按钮self.l1=t.Label(self.root,text='请选择阅读速度:')#标签self.cb['values'] = ('请选择-----','全部读取','一秒一行','两秒一行','自定义')#设置下拉列表框的内容  self.cb.current(0)#将当前选择状态置为0,也就是第一项self.cb.bind("<>",self.go)#绑定go函数,然后触发事件self.b1.place(x=30,y=30)self.b2.place(x=360,y=26)self.l1.place(x=130,y=30)self.te.place(x=30,y=60)self.cb.place(x=230,y=30)self.root.mainloop()

3、编写打开文件对话框的代码

defopen_file(self):self.file=filedialog.askopenfilename(title='打开文件', filetypes=[('文本文件','*.txt'), ('All Files','*')])returnself.file

这样就打开了以文本文件为首的文件。

4、选择打开的文件进行读取

self.ff=open(self.file,'r', encoding='utf8')aa=self.ff.read()

5、将文件中的内容的所有空格换行去掉

self.ab=aa.replace('\n','').replace('\t','').strip()

6、实现下拉列表中每个选项的功能

ifself.cb.get()=='请选择-----':            passelifself.cb.get()=='全部读取':ifself.ab:self.te.insert('insert',self.ab)#插入内容self.te.update()#更新内容else:self.ff.close()elifself.cb.get()=='一秒一行':fory in range(len(self.ab)):#遍历文件内容ifself.ab:self.te.insert('insert',self.ab[y])#插入内容ify%10==0andy!=0:#判断如果读取到十个字的长度则插入文本内容到文本框并换行self.te.insert('insert','\n')#插入换行self.te.update()#更新内容else:time.sleep(0.1)#每隔0.1秒显示一个,一行十个字,就能达到一秒出一行else:self.ff.close()#关闭文件elifself.cb.get()=='两秒一行':fory in range(len(self.ab)):ifself.ab:self.te.insert('insert',self.ab[y])ify%10==0andy!=0:self.te.insert('insert','\n')self.te.update()else:time.sleep(0.2)else:self.ff.close()elifself.cb.get()=='自定义':res=simpledialog.askinteger(title='请输入',prompt='几秒读取一行:',initialvalue='')fory in range(len(self.ab)):ifself.ab:self.te.insert('insert',self.ab[y])ify%10==0andy!=0:self.te.insert('insert','\n')self.te.update()else:time.sleep(res/10)else:self.ff.close()

这样就实现了每隔一秒每十个字节输出一行,当然你也可以一个字一个字让它输出,如果是这样,只需将下面的代码:

fory in range(len(self.ab)):#遍历文件内容ifself.ab:self.te.insert('insert',self.ab[y])#插入内容ify%10==0andy!=0:#判断如果读取到十个字节长度则插入文本内容到文本框self.te.insert('insert','\n')self.te.update()#更新内容else:time.sleep(0.1)

改为:

fory in range(len(self.ab)):#遍历文件内容ifself.ab:ify %10==0andy!=0:#判断如果读取到十个字节长度则插入文本内容到文本框self.te.insert('insert','\n')else:self.te.insert('insert',self.ab[y])#插入内容self.te.update()#更新内容time.sleep(0.1)

8、清空内容

defclean(self):self.te.delete('1.0', t.END)#删除文本框所有内容

这样就可以实现了。

下面我们来看下具体效果吧:

这样我们就轻松实现了一个小说阅读器,顺带提一下,你想一行多显示几个字符,只需要修改下面这行的数字即可:

ify %10==0andy!=0:

把10改为其他数字,他就会显示相应长度的字符了。

/小结/

1、本文基于Python库,编写了可视化图形界面,打造了一款简易小说阅读器,实现自定义字符大小的小说阅读器。今天的分享就到这里了,欢迎大家尝试。

python写小说阅读器_手把手教你用Python制作简易小说阅读器相关推荐

  1. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

  2. python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列

    简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...

  3. 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  4. python网页爬虫循环获取_手把手教你用 Python 搞定网页爬虫

    原标题:手把手教你用 Python 搞定网页爬虫 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的 ...

  5. python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据

    项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...

  6. python热搜排行功能_手把手教你用Python+Pyecharts让微博热搜榜动起来

    今天教大家如何用pyecharts制作微博热搜榜动态展示视频,先上视频看看效果: 教程主要有2部分: 一是python爬取微博热搜内容 二是用pyecharts制作动态视频 下面给大家详细介绍一下 一 ...

  7. python文件图标变成小电脑_手把手教你给Python程序写图形界面,并且打包成exe文件-exe文件...

    环境配置 官网下载Python3,LZ的配置环境是Python3.6,PyCharm 2017.2.1pip3 install PyQt5 #下载PyQt5 pip install PyQt5-too ...

  8. python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列(附代码)...

    本文约3600字,建议阅读10分钟. 本文将重点介绍时间序列数据的平稳性检验方法. 简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问 ...

  9. python图片分类技术介绍_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)!...

    介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...

最新文章

  1. Spring-国际化信息02-MessageSource接口
  2. log4net 小记
  3. java hashtable keys_Java Hashtable keys()方法与示例
  4. 滴滴CTO张博:过去的1095天 人工智能发展主要依赖3件事
  5. 数据分析--商业报告实例
  6. jdbc连接mysql驱动包_jdbc连接数据库驱动包
  7. signature=fc89d4352b6699754c14ce282ec75426,Broken chiral symmetry on a null plane
  8. HyperLedger Composer 测试 Fabric网络是否连通
  9. IEEE1588 同步机制
  10. JS-JavaScript打开新页面的两种方式:当前页面打开和新页面打开
  11. 01.深入理解乱码的原理
  12. 环形电流计算公式_环形变压器计算公式
  13. 百度编辑器设置上传文件大小
  14. rust发射台主楼_各专业分类词库(完全).doc
  15. python求派_python求π
  16. 项目部署-虚拟机-ip-Java变量-mysql-redis
  17. TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)
  18. BACnet协议栈中一个Ringbuff编程范例
  19. java笔试题---用*打印漏斗形,信雅达笔试题
  20. APP推广—区分推广渠道解决方案

热门文章

  1. 【IoT】卫朋:6000+ 字解读 | 2022年产品人必备的7个产品管理工具(1.0版)
  2. 学习大数据分析要什么基础,零基础入门ok吗?
  3. 蓝牙 - 配对和连接
  4. Win7安全模式卡在ClassPNP sys位置解决办法之一
  5. 基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题
  6. python运维是做什么的_Python运维工程师主要干什么?
  7. mysql 日程设计_客服-电销日程表 - 数据库设计 - 数据库表结构 - 果创云
  8. 毕业设计日志(18)
  9. mysql注入单引号和双引号的区别_mysql单引号和双引号的用法
  10. 戴尔笔记本插入耳机没有反应