“甲之蜜糖,乙之砒霜;甲之炼狱,乙之天堂”
——亦舒《曼陀罗》
Python学习 第七期
tkinter是一个官方库,它的作用和之前所讲的easygui类似,不过easygui是一个第三方库。在编写的时候一般优先使用官方库,所以在这里给大家讲解一下tkinter库。

窗口生成
tkinter的主要功能是弹框提示,那么为了这个目的我们自然就要创建一个窗口。而实现这一功能是通过Tk函数来进行的
同时,我们也有必要用mainloop设置刷新,否则创建的窗口将瞬间消失
如
import tkinter as tkwindow = tk.Tk()window.mainloop()当然我们也可以在窗口生成的时候设定一些参数
比如大小,标题等
下面列举一些常用的
自定义窗口大小
如果我们想让窗口一打开就是指定大小的,我们就要设置关于这方面的参数
所用的是geometry,具体用法如下
window.geometry("600x600")这条指令的意思是让窗口的大小为600x600,注意这里面的“x”就是小写的X,而且只能是这个格式
示例脚本如下
#!/usr/bin/python# -*- coding:utf-8 -*-import tkinter as tkwindow = tk.Tk()window.geometry("600x600")window.mainloop()运行结果:

当然,标题有没有人在意呢
如果一只是“tk”未免有些难看,这时候我们就要用到title
用法是
window.title("【标题名】")下面是演示脚本
#!/usr/bin/python# -*- coding:utf-8 -*-import tkinter as tkwindow = tk.Tk()window.geometry("600x600")window.title("我是一个窗口")window.mainloop()运行结果:

如果你已经尝试生成了窗口
就会发现这个窗口是可以改变大小的
不过有些时候我们不希望别人可以改变窗口的初始大小
这时候我们就需要
resizable的参数是两个数字,值为0或1(1以上视作1)
0表示不可变,而1表示可变
所以
window.resizable([x轴是否可变],[y轴是否可变])由于这个效果不太好展示,就不给演示脚本了
2.组件
然后就进入关键了,组件是tkinter库命门之所在
组件的搭配就形成了我们所看到的“界面”
例如项目:文件汇总工具【更新】中的图形界面就是由许多控件组成的
下面为大家大概讲述一下控件
标签
很多人奇怪“标签”是什么意思,其实就是我们看到的文字、图片,这些都由Label控件形成
参数有
Anchor 标签中文本的位置;
background(bg) 背景色;
foreground(fg) 前景色;
borderwidth(bd) 边框宽度;
width 标签宽度;
height 标签高度;
bitmap 标签中的位图;
font 字体;
image 标签中的图片;
justify 多行文本的对齐方式;
text 标签中的文本,可以使用'\n'表示换行
textvariable 显示文本自动更新,与StringVar等配合着用用法是这样的
import tkinter as tkwindow = tk.Tk()tkinter.Label(winodw,[参数名]=[参数]).pack()当然你也可以这样
import tkinter as tkwindow = tk.Tk()label = tkinter.Label(winodw,[参数名]=[参数])label.pack()这样听起来可能不这么容易理解
我来演示一下
#!/usr/bin/python# -*- coding:utf-8 -*-import tkinter as tkwindow = tk.Tk()window.geometry("600x600")window.title("我是一个窗口")window.resizable(0,0)tk.Label(window,text="This is a test").pack()window.mainloop()运行结果为

这时大家会注意到有一个pack
这就是控件的放置
大概汇总下
pack组件设置位置属性参数:
after: 将组件置于其他组件之后;
before: 将组件置于其他组件之前;
anchor: 组件的对齐方式,顶对齐'n',底对齐's',左'w',右'e'
side: 组件在主窗口的位置,可以为'top','bottom','left','right'(使用时tkinter.TOP,tkinter.E);
fill 填充方式 (Y,垂直,X,水平)
expand 1可扩展,0不可扩展
grid组件使用行列的方法放置组件的位置,参数有:
column: 组件所在的列起始位置;
columnspam: 组件的列宽;
row: 组件所在的行起始位置;
rowspam: 组件的行宽;
place组件可以直接使用坐标来放置组件,参数有:
anchor: 组件对齐方式;
x: 组件左上角的x坐标;
y: 组件右上角的y坐标;
relx: 组件相对于窗口的x坐标,应为0-1之间的小数;
rely: 组件相对于窗口的y坐标,应为0-1之间的小数;
width: 组件的宽度;
heitht: 组件的高度;
relwidth: 组件相对于窗口的宽度,0-1;relheight: 组件相对于窗口的高度,0-1;
这一期就到这里,剩下的我们下一期继续
正文结束,长按关注公众号
