python写小说阅读器_手把手教你用Python制作简易小说阅读器
/前言/
不知从什么时候开始。小说开始掀起了一股浪潮,它让我们平日里的生活不在枯燥乏味,很多我们做不到的事情在小说里都能轻易实现。
今天我们要做的就是一个小说阅读器了,一个可以将你的文章中的字每隔多少秒显示一次的阅读器,就好比手机上的定时阅读一样,是不是很有趣?那么下面我们就来具体看看它是如何实现的吧。
/具体实现/
小说阅读器的话,当然界面是少不了的,下面我们开始编写界面。
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制作简易小说阅读器相关推荐
- python正确的输入语句_手把手教你在python中如何使用while True语句
在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...
- python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列
简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...
- 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...
[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...
- python网页爬虫循环获取_手把手教你用 Python 搞定网页爬虫
原标题:手把手教你用 Python 搞定网页爬虫 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的 ...
- python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据
项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...
- python热搜排行功能_手把手教你用Python+Pyecharts让微博热搜榜动起来
今天教大家如何用pyecharts制作微博热搜榜动态展示视频,先上视频看看效果: 教程主要有2部分: 一是python爬取微博热搜内容 二是用pyecharts制作动态视频 下面给大家详细介绍一下 一 ...
- python文件图标变成小电脑_手把手教你给Python程序写图形界面,并且打包成exe文件-exe文件...
环境配置 官网下载Python3,LZ的配置环境是Python3.6,PyCharm 2017.2.1pip3 install PyQt5 #下载PyQt5 pip install PyQt5-too ...
- python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列(附代码)...
本文约3600字,建议阅读10分钟. 本文将重点介绍时间序列数据的平稳性检验方法. 简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问 ...
- python图片分类技术介绍_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)!...
介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...
最新文章
- Spring-国际化信息02-MessageSource接口
- log4net 小记
- java hashtable keys_Java Hashtable keys()方法与示例
- 滴滴CTO张博:过去的1095天 人工智能发展主要依赖3件事
- 数据分析--商业报告实例
- jdbc连接mysql驱动包_jdbc连接数据库驱动包
- signature=fc89d4352b6699754c14ce282ec75426,Broken chiral symmetry on a null plane
- HyperLedger Composer 测试 Fabric网络是否连通
- IEEE1588 同步机制
- JS-JavaScript打开新页面的两种方式:当前页面打开和新页面打开
- 01.深入理解乱码的原理
- 环形电流计算公式_环形变压器计算公式
- 百度编辑器设置上传文件大小
- rust发射台主楼_各专业分类词库(完全).doc
- python求派_python求π
- 项目部署-虚拟机-ip-Java变量-mysql-redis
- TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)
- BACnet协议栈中一个Ringbuff编程范例
- java笔试题---用*打印漏斗形,信雅达笔试题
- APP推广—区分推广渠道解决方案
热门文章
- 【IoT】卫朋:6000+ 字解读 | 2022年产品人必备的7个产品管理工具(1.0版)
- 学习大数据分析要什么基础,零基础入门ok吗?
- 蓝牙 - 配对和连接
- Win7安全模式卡在ClassPNP sys位置解决办法之一
- 基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题
- python运维是做什么的_Python运维工程师主要干什么?
- mysql 日程设计_客服-电销日程表 - 数据库设计 - 数据库表结构 - 果创云
- 毕业设计日志(18)
- mysql注入单引号和双引号的区别_mysql单引号和双引号的用法
- 戴尔笔记本插入耳机没有反应