马上快毕业了,最近也是在复盘一些课程小项目,把当时的一些思路写下来,希望能帮到遇到问题的您,这是这个系列的第一篇:自然语言处理小程序。
一、前言
本篇主要介绍的是,NLP课程最后,老师布置了一个小程序的作业,要求集成整个课设中实现的功能,包括分词、命名实体识别、文本分类、文本聚类,并且需要保证界面的美观,同时需要实现系统的测试,先放一张图展示最终的效果。
二、tkinter介绍
整个小程序前端的设计是使用tkinter来实现的,Tkinter 是 Python 的标准 Tk GUI 工具包的接口,它是 Python 自带的标准库,可以编写简单的图形界面程序。
2.1 哪些库能够支持您
如果您只对python熟悉,python提供了很多库来支持开发图形用户界面(GUI)应用程序,下面对几个常见的库进行介绍:
Tkinter:Tkinter是Python的标准GUI库,随Python安装包自带。它提供了一个简单的方法来创建窗口、对话框、按钮、文本框等基本控件。Tkinter适用于快速开发简单的GUI应用,但可能不那么适合复杂或现代风格的应用界面设计。
PyQt/PySide:PyQt和PySide都是Qt库的Python绑定。Qt是一个强大的跨平台C++框架,用于开发具有优秀图形用户界面的应用程序。PyQt和PySide几乎提供了Qt的全部功能,支持丰富的控件、图形(2D和3D)、网络、数据库等开发需求。
Kivy:Kivy是一个开源Python库,用于开发多触摸应用程序。它旨在快速开发应用程序,支持iOS、Android、Windows、OS X和Linux。Kivy特别适合需要多点触控功能的应用,如游戏或富媒体应用。
2.2 怎样使用tkinter来设计一个小程序
正如2.1所说,tkinter的优势就是简单,您只需要三行代码,就可以在电脑屏幕中看到一个小的图形用户界面,代码如下:
import tkinter as tk
windows2 = tk.Tk()
windows2.mainloop()
但如果要满足功能的需求,那当然需要去完善他,下面具体介绍拓展它的方法:
2.2.1 主界面设置
当我们启动代码时,第一个界面就是主界面,所以主界面的开发变成了重要的是,首当其冲的就是如何设计主界面的大小、美观,代码如下,可以看出只需要在定义好的窗口变量中直接加各项参数就可以,十分的简单方便。
windows = tk.Tk()
# 设置窗口处于顶层
windows.attributes('-topmost',True)
# 设置窗口的透明度
windows.attributes('-alpha',1)
# 设置窗口被允许最大调整的范围,与resizble()冲突
windows.maxsize(2000,1000)
# 设置窗口被允许最小调整的范围,与resizble()冲突
windows.minsize(50,50)
windows.title('自然语言处理小程序')
windows.geometry("1200x500")
组件的使用主要是为了实现某一特定的功能,常用的组件有标签框、文本框、按钮、表格、拉选项,等等,本篇主要用到了上述四个组件,下面对组件使用进行介绍。
2.2.2 标签框的使用
标签框一般是用于,展示一个固定的文本内容,一步就可以实现。
lblId2 = tk.Label(text = '请输入内容所在列:',font='15').place(x=40,y=190)
2.2.3 文本框的使用
文本框是前后端连接的一个重要组件,通常用于为用户提供输入的功能,所以文本框需要一个参数来记录用户的内容,代码如下:
#fileid用于保存用户输入内容 #fileid1则是创建的组件
fileid = tk.StringVar()
fileid1 = tk.Entry(windows, textvariable=fileid)
fileid1.place(x=60, y=140)
2.2.4 按钮的使用
按钮则是实现功能的重要组件,用户在输入文本框之后,点击按钮实现相应的功能,所以按钮需要连接一个功能函数:其中yuchuli是功能函数,在设计功能函数时需要调用文本框变量。
btnSer2 = tk.Button(windows,font='40', text='数据预处理', command= yuchuli)
btnSer2.place(x=500, y=430,width=150,height=50)
2.2.5 表格的使用
表格一般用于展示数据,需要提前设置好列名。
columns = [ '待查阅1', '待查阅2', '待查阅3','待查阅4','待查阅5','待查阅6']
table = ttk.Treeview(
windows, # 父容器
height=15, # 表格显示的行数,height行
columns=columns, # 显示的列
show='headings', # 隐藏首列
)
table.place(x=250,y=40)
2.2.6 背景图片的使用
背景图片的实现逻辑是通过创建一个透明的,在最底层的标签组件,然后将图片渲染到标签上,最终实现展示图形界面的效果。
三、项目的整体实现
上面介绍完基本的使用方式之后,就可以开始自己的设计了,但整体的设计需要遵循几个重要的逻辑。
3.1 参数的有效性(用户良好性)
小程序功能实现需要在按钮组件中连接功能函数,功能函数编写方式就像正常的代码编写一样,但需要注意的是,要提前考虑参数的有效性。什么是参数的有效性,就比如说,我的功能是要实现一个数据预处理,但如果用户没有导入数据,那数据处理这个功能也无法提起了。
所以需要在功能函数中加入一个判断条件,以此来杜绝这种条件,代码实例如下:
def yuchuli():
filepath = fileid.get()
if filepath!="":
XXXXX
else:
tk.messagebox.showerror(title='错误!', message='请输入有效的文件名')
3.2 项目实现逻辑
整个项目实现共设计了两个页面和五个功能模块,五个功能模块分别为数据展 示模块、分词模块、命名实体识别模块、文本聚类模块和文本分类。那如何实现多个模块以及页面之间的连接呢。
采用的基本逻辑如下,在使用第一个界面时,当点击换页按钮时,编写按钮的功能函数:将主页面窗口进行最底层隐藏,并创建新窗口及其组件,当点击功能按钮时,删除或更新原页面的一些组件,并创建新的组件来展示功能运行后的效果。
四、总结
本篇主要介绍了tkinter的使用,并且介绍了相关的实现方法,希望对您有所帮助,如果您需要整个项目的源代码或者寻求帮助,可以私信博主,看到后就回回复。