发布时间:2025-12-11 02:45:09 浏览次数:1
小说阅读器的话,当然界面是少不了的,下面我们开始编写界面。 1、首先导入我们需要用到的包
importtimefromtkinterimportmessageboximporttkinterastfromtkinterimportttkfromtkinterimportfiledialogfromtkinterimportsimpledialog
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("<<ComboboxSelected>>",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'),('AllFiles','*')])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()=='一秒一行':foryinrange(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()=='两秒一行':foryinrange(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='')foryinrange(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()这样就实现了每隔一秒每十个字节输出一行,当然你也可以一个字一个字让它输出,如果是这样,只需将下面的代码:
foryinrange(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)改为:
foryinrange(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改为其他数字,他就会显示相应长度的字符了。
“怎么用Python制作简易的小说编辑器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注本站网站,小编将为大家输出更多高质量的实用文章!