文章目录
一、前言废话
最近正式开始学习Python中GUI设计的最主要库之一:tkinter。
实在是憋不住了,写个啥东西都是只能在Python中运行,所以很想自己也能编写一个小软件,能够实现用户交互那种。
那么就必须学习关于GUI方面的知识。
与之前学习Python中的其他库不一样,以往总是先写内置的函数方法和属性,再与实际相结合,来解决生活工作中的问题。
这一次学习tkinter,我通过一个个实际的项目来逆向学习tkinter中的各种方法和属性。
因为对于这种实操性强、涉及内容比较多的库,采取这样的方式进行学习印象会更加深刻,同时更容易关注知识的主线脉络。
(个人见解)
二、设计分析
今日份练习是设计一个登录界面。
就像每一幢大楼在动手开工前,都需要有详细完整的设计图纸;同样的正式开始写代码构造这个登录界面之前,我们需要先画出一个蓝图,我们要设计怎样的一个登录界面。
于是我先动手在PPT里面画了样图。
Duang!Duang!Duang!这就是我想要制作出的界面样子。
当然这只是个人的设计想法,你们也可以按照自己的想法去设计。
但是重要的一定是先确定了设计图,分析了事件功能,再根据这个图最后去写代码。
接下来,我们再拆解一下整个设计界面
- 整个窗口的标题部分由图片与文字组成,图片就用的我个人头像,再配上文字 Nilvya办公系统。
- 右上角的窗口最小化、最大化以及关闭窗口在tkinter中会自动生成,这个就不用管了
- 配上一张符合主题的图片作为装饰
- 文本信息,提示用户分别输入账号和密码
- 文本框,用来输入账号和密码的
- “登录”按钮,背景色为青蓝色,风格为平面风。关于事件处理,如果账号密码正确则显示 [登录成功];如果账号密码错误则显示 [账号或密码错误],并且清除已经输入的账号和密码
好啦,整个设计界面以及处理事件就分析得差不多了,接下来就是正式开始写代码了。
开干!
三、代码分步解析
整个设计的思路、步骤以及代码,咱们采用分段一一就是演示说明。
如果不想看分步解析的,也可以直接跳转到 四、复盘总结,有完整的代码。
——
1. 导入工具库
import tkinter as tk
import tkinter.messagebox
from PIL import Image # 导入Pillow,为了对图片进行处理
这里导入了Pillow,是为了对办公图片进行处理,裁剪合适的宽高。
——
2. 创建应用程序窗口
window = tk.Tk()
window.title('Nilvya办公系统') # 更改窗口标题
window.geometry('327x272') # 根据样图宽高比例,设定合适的窗口大小
window.iconphoto(False, tk.PhotoImage(file='头像.png')) # 更改窗口图标
window.mainloop() # 启动消息循环
需要重点强调两个地方
- 窗口宽高,是根据设计图本身的宽高进行等比例缩放的,只要确保宽高比一致就好
- 关于更改窗口图标的方法操作,可以查看我写的【学习日常随记】tkinter设置窗口图标的三种方式
——
3. 创建画布放置图片
# 图片宽高像素更改
# im = Image.open('办公图片.png')
# shortsizedIm = im.resize((327,86))
# shortizedIm.save('办公图片新.png')
canvas = tk.Canvas(window, width=327, height=84, bg='grey')
image_file = tk.PhotoImage(file='办公图片新.png')
image = canvas.create_image(163.5, 0, anchor='n', image