内容正文:
目录/CONTENTS
1.
什么是Tkinter
2.
布局管理器
3.
主窗口的创建及属性
4.
控件常考通用属性
1
什么是Tkinter
安徽省计算机类高考技能教学
2
Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包Python接口的封装,它是Python官方推荐的 GUI(图形用户界面) 工具包,属于Python自带的标准库模块
只需安装好Python后,就可以直接使用它,而无须另行安装(Python内置的)。
作为一款 Python的GUI工具,Tkinter 拥有良好的跨平台性,支持 Windows、Linux、Mac 平台,它传承了 Python 语法简洁、代码易读的基本特点。
Tkinter的定义
布局管理器
安徽省计算机类高考技能教学
4
Tkinter 提供了三种常用的布局管理器,分别是 pack( )、grid( ) 以及 place( ),如下表所示:
三大布局管理器
方法 说明 特点
pack( ) 默认将控件自上而下居中布局。强调控件的先后顺序 灵活性较差
grid( ) 以行和列的形式(类似网格)对控件进行排列 较为灵活
place( ) 可以指定组件大小以及摆放位置 三个方法中最为灵活
注意:
其中的place( )布局由于需要提供很多坐标系的数值,几乎不会考查。一般都是已经完善好的place( )布局。然后让我们补充按钮对应的回调函数。
主要考查pack( )和grid( )布局。
pack( ) 是一种较为简单的布局方法,在不使用任何参数的情况下,它会将控件以添加时的先后顺序,自上而下,一行一行的进行排列,并且默认居中显示。pack( ) 方法的常考参数如下所示:
pack布局
属性 说明
anchor 组件在窗口中的对齐方式,有9个方位参数值,比如"n"/"w"/"s"/"e"/"ne",以及 "center" 等(这里的 e w s n分别代表,东西南北),如果是大写的EWSN不用双引号例如:anchor=E(其实就是控件所在行的范围内的对齐方式)
side 组件放置在窗口的哪个位置上,参数值 'top','bottom','left','right'。注意,单词小写时需要使用字符串格式,若为大写单词则不必使用字符串格式(不加引号)
ipadx,ipady 表示控件内的文本内容和组件边框的距离(内边距)。
padx,pady 用于控制之间的上下、左右的距离(外边距)。其中的padx一般需要配合side使用才能生效。
pack布局-示例
from tkinter import * # 导入tkinter模块
root=Tk() # 创建主窗口
root.title('学习pack布局')
root.geometry("400x200") # 设置窗口大小
btn1=Button(root,text="按钮1") # 创建按钮控件
btn1.pack(pady=30,ipadx=20) # 使用pack方式布局(如果没有布局创建的按钮控件则不会显示在主窗口)并且左右内边距20px
btn2=Button(root,text="按钮2")
btn2.pack(side='left',padx=40) # 按钮2放置在窗口左侧居中位置,并且设置水平外边距为40px
btn3=Button(root,text="按钮3")
btn3.pack(side='left') # 按钮3放置在窗口左侧居中位置
root.mainloop() # 主事件循环,没有这行代码主窗口则不会显示
20px
20px
40px
40px
30px
30px
grid( ) 布局是一种基于网格式的布局管理方式,相当于把窗口看成由行和列组成的表格。当使用 grid 进行布局时,表格内的每个单元格都可以放置一个控件。从而实现对界面的布局管理。
grid布局
属性 说明
row 控件位于表格中的第几行,默认从第0行开始
rowspan 控件所跨的行数(默认为1行),通过该参数可以合并多行单元格已实现控件居中的效果
column 控件位于表格中的第几列,默认从第0列开始
columnspan 控件所跨的列数(默认为1列),通过该参数可以合并多列单元格已实现控件居中的效果
ipadx,ipady 表示控件内的文本内容和组件边框的距离(内边距)
padx,pady 用于控制之间的上下、左右的距离(外边距)
sticky 该属性用来设置控件位于单元格哪个方位上,参数值和anchor相同。若不设置该参数则控件在单元格内居中。(配合rowspan和columnspan使用,同时使用rowspan和column可以解锁NE,SE,SW,NW的四个方向)
注意:在一个程序中不能同时使用 pack( ) 和 grid( ) 方法,否则程序会运行错误。
grid布局-示例1
from tkinter import * # 导入tkinter模块
root=Tk() # 创建主窗口
root.title('学习grid布局')
root.geometry(“300x100”) # 设置窗口大小
btn1=Button(root,text=“按钮1”)
btn1.grid(row=0,column=0) # 布局在第0行第0列
btn2=Button(root,text="按钮2")
btn2.grid(row=0,column=1) # 布局在第0行第1列
btn3=Button(root,text="按钮3")
btn3.grid(row=1,column=0)
btn4=Button(root,text="按钮4")
btn4.grid(row=1,column=1)
root.mainloop() # 主事件循环,没有这行代码主窗口则不会显示
grid布局-示例2
from tkinter import * # 导入tkinter模块
root=Tk() # 创建主窗口
root.title('学习grid布局')
root.geometry("300x100") # 设置窗口大小
btn1=Button(root,text="按钮1")
btn1.grid(rowspan=2,column=0) # 合并两行
btn2=Button(root,text="按钮2")
btn2.grid(row=0,column=1)
btn3=Button(root,text="按钮3")
btn3.grid(row=1,column=1)
root.mainloop()
grid布局-示例3
from tkinter import * # 导入tkinter模块
root=Tk() # 创建主窗口
root.title('学习grid布局')
root.geometry("300x100") # 设置窗口大小
btn1=Button(root,text="按钮1")
btn1.grid(row=0,columnspan=2) # 合并两列
btn2=Button(root,text="按钮2")
btn2.grid(row=1,column=0)
btn3=Button(root,text="按钮3")
btn3.grid(row=1,column=1)
root.mainloop()
与前两种布局方法相比,采用place( )方法进行布局管理要更加精细化,通过place( )布局管理器可以直接指定控件在窗体内的绝对位置,或者相对于其他控件定位的相对位置。
place布局
属性 说明
anchor 就是对象位置的参考点,参数值N/NE/E/SE/S/SW/W/NW 或 CENTER,默认值是 NW(左上角)。
x、y x和y参数分别用于设置控件在主窗口或框架中水平方向和垂直方向布局的起始位置,它们均是以 px(像素)为单位。主窗口左上角为原点。
relx、rely 定义控件相对于根窗口在水平和垂直方向上的相对位置,取值范围在0.0~1.0 之间。
width、height 控件自身的宽度和高度(单位为像素)
relwidth 、relheight 控件宽度和高度相对于根窗体高度和宽度的比例,取值也在 0.0~1.0 之间
由于place( )布局不用自己去写,因此这里我们只了解属性x,y
place( )方法可以与grid( )方法混合使用,也可以和pack( )布局使用
place布局-示例
from tkinter import * # 导入tkinter模块
root=Tk() # 创建主窗口
root.title('学习grid布局')
root.geometry("300x200")
btn1=Button(root,text="按钮1")
btn1.place(x=30,y=30)
btn2=Button(root,text="按钮2")
btn2.place(x=80,y=80)
btn3=Button(root,text="按钮3")
btn3.place(x=130,y=130)
root.mainloop()
x:30
y:30
x:80
y:80
x:130
y:130
主窗口的创建及属性
安徽省计算机类高考技能教学
14
主窗口控件(window)是一切控件的基础,它好比是一台高速运转的机器,而其他控件则相当于这台机器上的部件,比如齿轮、链条、螺丝等等。主窗口是一切控件的基础,所有的控件的都需要通过主窗口来显示。
下面快速创建一个主窗口:
主窗口
# 导入模块
from tkinter import *
# 创建一个主窗口对象
root = Tk()
# 调用mainloop()显示主窗口
root.mainloop()
不设置窗口标题则默认是tk
不设置窗口的大小则默认是自适应,根据当面的控件来自适应调节窗口大小
主窗口常考属性(必须要掌握):
主窗口属性
函数 说明
root.title( ) 接受一个字符串参数,为窗口起一个标题
root.resizable( ) 是否允许用户拉伸主窗口大小,默认为可更改。当设置resizable(width=False,height=False)时表示窗口的宽度都不可拉伸
root.geometry( ) 设定主窗口的大小以及位置(初始显示位置),如:geometry(''300x300+400+500'') 表示窗口的宽300高300,初始显示位置为坐标(400,500),注意:''300x300''这里的''x''是字母''x''
root.quit( ) 关闭当前窗口 root.destroy()/quit() 也是可以退出窗口的
root.mainloop( ) 窗口主事件循环,使窗口一直处于显示状态
root.config( ) 设置窗口的背景色,也可以接受16进制的颜色值(后面会详细介绍通用的属性)
主窗口-示例
# 导入模块
from tkinter import *
# 创建一个主窗口对象
root = Tk()
# 设置窗口的标题
root.title("学习主窗口")
# 设置窗口的大小和初始显示位置
root.geometry("300x200+400+500")
# 设置窗口的背景色为红色
root.config(background='red')
# 设置窗口水平方向能拉伸,垂直方向不能拉伸
root.resizable(width=True,height=False)
# 主事件循环
def tq():
root.quit()
# 创建按钮控件并绑定回调函数tq
btn=Button(root,text="退出",command=tq)
btn.pack()
root.mainloop()
点击”退出”按钮即退出窗口
控件常考通用属性
安徽省计算机类高考技能教学
18
通用属性(适用于所有控件)
控件常考通用属性
属性名称 说明
bg 用来设置背景色
bd 控件的边框宽度,单位为像素(默认为 2 个像素)
font 控件文本的样式,元组参数格式(字体,大小,样式)如:font=(“宋体”,10,”bold”) 即宋体,10号,加粗
fg 文本字体颜色
width/height 控件的宽和高
relief 指定边框样式,默认值是 “flat”,其他参数值有 “groove”、“raised”、“ridge”、“solid”或者“sunken”,如果全是大写则不用双引号,例如relief=GROOVER
state 该参数用来指定控件的状态,默认值为“normal”(正常状态), “disabled”(不可用状态)主要用于按钮控件
text 显示的文本内容,文本内可以包含换行符
config 可以用来设置控件的属性 如 lb.config(text=st) 设置文本为st
谢 谢 观 看
20
$$