写在前面
大家好!这一章主要讲解搜索引擎GUI的设计与实现。还记得我在《如何一天做出新闻搜索引擎(0)》中放的几张镇楼的图片吗?我们在前几章已经完成的搜索引擎的所有后台的程序,接下来就是制作与用户交互的界面啦!
个人觉得,这一部分才是最有成就感的部分,因为GUI可以给我们一种“我们写的程序终于可以用了”的感觉。这酸爽,只有自己写完才能感受得到(?)。
这篇文章只是讲解思路,代码的展示也是为了配合讲解。如果大家要查看源码,请移步我的github,这篇文章所讲内容在GUI(运行该程序使用搜索引擎).py
中。
开始制作GUI!
想要做出GUI,请回答以下“人生三大问”:
1. 它长什么样?
这一部分就见仁见智了,我只能给出我的设计作为参考:
我把我的GUI分为三个界面:输入界面,新闻显示界面和刷新提示界面(分别对应上面的三张图)。其中输入界面是运行程序之后就弹出来的,新闻显示界面是点击“千度一下”后弹出的界面,而刷新提示界面是点击“刷新”后弹出的界面。
其中输入界面和新闻显示界面的作用不言而喻,而刷新提示界面的作用是告诉用户“现在数据库正在刷新”。由于采用了多线程的设计,刷新的时候并不会影响用户的查询,但是因为此时新数据还没有写进数据库,所以用户查询所用的数据仍然是旧数据,所以这个刷新提示界面的作用就是提示用户“此时的数据仍然是旧数据”。当刷新结束,新数据写入数据库后,刷新提示界面就会自动地消失。
2. 如何实现?
鉴于我们的目标是“一天实现搜索引擎”,所以我们采用最容易上手的tkinter
库作为实现方式。这里推荐一个免费的视频网课,我就是通过这个网课一小时入门的(?)。
由于第一步的设计不同,在这里的实现当然也不同。我在制作GUI的时候最大的体会是,GUI制作是一个“艺术”过程,需要不断地去调整参数、看效果、再调整参数,才能达到自己心目中的理想效果。
就我的设计而言,因为输入界面是最先弹出的,所以我首先实现的是输入界面。代码供参考:
if __name__ == '__main__':
window = tk.Tk()
window.geometry('3000x650')
canvas = tk.Canvas(window, bg = 'white',height = 750,width = 3200)
#欢迎图片
welcome_file = tk.PhotoImage(file = 'welcome.gif')
welcome_img = canvas.