python tkinter载入图片_tkinter库(一)

“甲之蜜糖,乙之砒霜;甲之炼狱,乙之天堂”

                                                                           ——亦舒《曼陀罗》

Python学习 第七期


tkinter是一个官方库,它的作用和之前所讲的easygui类似,不过easygui是一个第三方库。在编写的时候一般优先使用官方库,所以在这里给大家讲解一下tkinter库。

88572d1b3ad38f9be6323ccbd44faeb7.png


  1. 窗口生成


       tkinter的主要功能是弹框提示,那么为了这个目的我们自然就要创建一个窗口。而实现这一功能是通过Tk函数来进行的

       同时,我们也有必要用mainloop设置刷新,否则创建的窗口将瞬间消失

      如 

import tkinter as tkwindow = tk.Tk()window.mainloop()

       当然我们也可以在窗口生成的时候设定一些参数

       比如大小,标题等

      下面列举一些常用的

  1. 自定义窗口大小

如果我们想让窗口一打开就是指定大小的,我们就要设置关于这方面的参数

所用的是geometry,具体用法如下

window.geometry("600x600")

这条指令的意思是让窗口的大小为600x600,注意这里面的“x”就是小写的X,而且只能是这个格式

示例脚本如下

#!/usr/bin/python# -*- coding:utf-8 -*-import tkinter as tkwindow = tk.Tk()window.geometry("600x600")window.mainloop()

运行结果:

801bfc493ba2ae07a3607a51fa37cd50.png

当然,标题有没有人在意呢

如果一只是“tk”未免有些难看,这时候我们就要用到title

用法是

window.title("【标题名】")

下面是演示脚本

#!/usr/bin/python# -*- coding:utf-8 -*-import tkinter as tkwindow = tk.Tk()window.geometry("600x600")window.title("我是一个窗口")window.mainloop()

运行结果:

38006f951ce3b1da62d120a4eed31255.png

如果你已经尝试生成了窗口

就会发现这个窗口是可以改变大小的

不过有些时候我们不希望别人可以改变窗口的初始大小

这时候我们就需要

resizable的参数是两个数字,值为0或1(1以上视作1)

0表示不可变,而1表示可变

所以

window.resizable([x轴是否可变],[y轴是否可变])

由于这个效果不太好展示,就不给演示脚本了


2.组件


然后就进入关键了,组件是tkinter库命门之所在

组件的搭配就形成了我们所看到的“界面”

例如项目:文件汇总工具【更新】中的图形界面就是由许多控件组成的

下面为大家大概讲述一下控件

  1. 标签

很多人奇怪“标签”是什么意思,其实就是我们看到的文字、图片,这些都由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()

运行结果为

7c4d6d54649ad3fe783d666789151095.png

这时大家会注意到有一个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;

这一期就到这里,剩下的我们下一期继续

正文结束,长按关注公众号

a2a7b67df32569964d4119f58325c6c2.png