目录
1、简介
2、创建Windows
常用的Tkinter组件
按钮的options
3、布局管理器
3.1pack布局管理局
pack()方法提供的参数选项
3.2grid布局管理器
grid()方法提供的参数选项
3.3place布局管理器
place()方法提供的参数选项
1、简介
Tkiner是Python的标准GUI库。由于Tkinter内置在Python的安装包中,因此只要安装好Python就能导入Tkinter库,而且IDLE也是用Tkinter编写而成的。对于简单的图形界面Tkinter是能应付自如的,使用Tkinter可以快速创建GUI应用程序
与其他编程语言的 GUI 工具包相比,Tkinter 编码效率高,能够实现快速开发的目的,非常适合初学者学习。Tkinter 使用纯 Python 语言开发,与 C/C++ 开发的 Qt 框架相比,Tkinter 有自身的局限性,比如性能、功能丰富程度等都不及 Qt,因此它只适合开发一些简单的程序,比如计算器的界面,或者一个简易的聊天窗口等
2、创建Windows
import tkinter
my_calendar = tkinter.Tk()
my_calendar.title('这是一个GUI界面')
my_calendar.mainloop()
在创建窗口对象后,可以使用geometry()设置窗口的大小
my_calendar.geometry('1000x200')
(注意:x是小写字母,不是乘号)
Tkinter提供各种组件(控件),如按钮、标签和文本框,可在一个GUI应用程序中使用。这些组件通常被称为空间或者部件。目前常用的Tkinter组件如下表:
常用的Tkinter组件
控件 | 描述 |
Button | 按钮控件,在程序中显示按钮 |
Canvas | 画布控件,显示图形元素如线条或文本 |
Checkbutton | 多选框控件,用于在程序中提供多项选择框 |
Entry | 输入控件,用于显示简单的文本内容 |
Frame | 框架控件,在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件,可以显示文本和位图 |
Listbox | 列表框控件,用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项 |
Menu | 菜单控件,显示菜单栏、下拉菜单和弹出菜单 |
Message | 消息控件,用来显示多行文本,与Label比较类似 |
Radiobutton | 单选按钮控件,显示一个单选的按钮状态 |
Scale | 范围控件,显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框 |
Text | 文本控件,用于显示多行文本 |
Toplevel | 容器控件,用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件,与Entry类似,但是可以指定输入范围值 |
PanedWindow | 一个窗口布局管理的插件,可以包含一个或者多个子控件 |
LabelFrance | 一个简单的容器控件,常用于复杂的窗口布局 |
tkMessageBox | 用于显示应用程序的消息框 |
Tkinter 按钮组件用于在 Python 应用程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为,能够与一个 Python 函数关联,当按钮被按下时,自动调用该函数
import tkinter
from tkinter import *
my_calendar = tkinter.Tk()
my_calendar.title('这是一个GUI界面')
my_calendar.geometry('1000x200')
# w = Button ( master, option=value, ... )
button1 = Button(my_calendar, text = "欢迎")
button1.pack()
my_calendar.mainloop()
master: 按钮的父容器
options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔
按钮的options
options | 描述 |
activebackground | 当鼠标放上去时,按钮的背景色 |
activeforeground | 当鼠标放上去时,按钮的前景色 |
bd | 按钮边框大小,默认为2像素 |
bg | 按钮的背景色 |
command | 按钮关联的函数,当按钮被点击时,执行该函数 |
fg | 按钮的前景色(按钮文本的颜色) |
font | 文本字体 |
height | 按钮的高度 |
highlightcolor | 要高亮的颜色 |
image | 按钮上要显示的图片 |
justify | 显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT,RIGHT,CENTER |
padx | 按钮在X轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离 |
pady | 按钮在Y轴方向上的内边距(padding) |
relief | 边框样式,设置控件3D效果,可选的有:FLAT,SUNKEN,RAISED,GROOVE,RIDGE。默认效果为FLAT |
state | 设置按钮组件状态,可选的有NORMAL,ACTIVE,DISABLED。默认NORMAL |
underline | 下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为0时,第一个字符带下划线,为1时,前两个字符带下划线,以此类推 |
width | 按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小) |
wraplength | 限制按钮每行显示的字符的数量 |
text | 按钮的文本内容 |
anchor | 锚选项,控制文本的位置,默认为中心 |
3、布局管理器
Tkinter布局管理器(geometry manager)用于组织和管理父组件(往往是窗口)中子组件的布局方式。Tkinter提供了3种不同风格的几何布局管理类:pack、grid和place
3.1pack布局管理局
pack布局管理器采用块的方式组织组件。pack布局根据子组件创建生成的顺序,将其放在快速生成界面设计中而广泛采用
调用子组件的方法pack(),则该子组件在其父组件中采用pack布局:
pack()方法提供的参数选项
选项 | 描述 | 取值范围 |
side | 停靠在父组件的那一边上 | ’top’(默认值),’buttom’,’left’,’right’ |
anchor | 停靠位置,对应于东、南、西、北以及4个角 | ’n’, ’s’, ’e’, ’w’, ’nw’, ’sw’, ’se’, ’ne’, ’center’ |
fill | 填充空间 | ’x’, ’y’, ’both’, ’none’ |
expand | 扩展空间 | 0或1 |
ipadx,ipady | 组件内部在x/y方向上填充的空间大小 | 单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点) |
padx,pady | 组件外部在x/y方向上填充的空间大小 | 单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点) |
import tkinter
from tkinter import *
my_calendar = tkinter.Tk()
my_calendar.title('这是一个GUI界面')
my_calendar.geometry('500x500')
button1 = Button(my_calendar, text = "欢迎")
button1.pack(side = LEFT)
button2 = Button(my_calendar, text = "光临")
button2.pack(side = RIGHT)
my_calendar.mainloop()
3.2grid布局管理器
grid(表格)布局管理器采用表格结构组织组件。子组件的位置由行/列确定的单元格决定,子组件可以跨越多行/列。每一列中,列宽由这一列中最宽的单元格确定。grid布局适合于表格形式的布局,可以实现复杂的界面,因而被广泛采用
调用子组件的grid()方法,则该组件在其父组件中采用grid布局:
grid(option = value,……)
grid()方法提供的参数选项
选项 | 描述 | 取值范围 |
sticky | 组件紧贴所在单元格的某一边角,对应于东、南、西、北以及四个角 | ’n’,’s’,’e’,’w’,’nw’,’sw’,’se’,’ne’,’center’ |
row | 单元格行号 | 整数 |
column | 单元格列号 | 整数 |
rowspan | 行跨度 | 整数 |
columnspan | 列跨度 | 整数 |
ipadx,ipady | 组件内部在x/y方向上填充的空间大小 | 单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点) |
padx,pady | 组件外部在x/y方向上填充的空间大小 | 单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点) |
grid()有两个重要的参数:一个是row;另一个是column。它们用来指定将子组件放置到什么位置,如果不指定row,则会将子组件放置到第一个可用的行上;如果不指定column,则使用第0列(首列)
import tkinter
from tkinter import *
my_calendar = tkinter.Tk()
my_calendar.title('这是一个GUI界面')
my_calendar.geometry('500x500')
button1 = Button(my_calendar, text = "欢迎")
button1.grid(row = 0, column = 0)
button2 = Button(my_calendar, text = "光临")
button2.grid(row = 1, column = 1)
my_calendar.mainloop()
3.3place布局管理器
place布局管理器允许指定组件的大小与位置。place布局的优点是可以精确控制组件的位置,不足之处是改变窗口大小时,子组件不能随之灵活改变大小
调用子组件的方法place(),则该子组件在其父组件中采用place布局:
place(option = value,……)
place()方法提供的参数选项
选项 | 描述 | 取值范围 |
x,y | 将组件放到指定位置的绝对坐标 | 从0开始的整数 |
relx,rely | 将组件放到指定位置的相对坐标 | 取值范围为0~1 |
height,width | 高度和宽度,单位为像素(px) | |
anchor | 对齐方式,对应于东、南、西、北以及4个角 | ’n’,’s’,’e’,’w’,’nw’,’sw’,’se’,’ne’,’center’ |
import tkinter
from tkinter import *
my_calendar = tkinter.Tk()
my_calendar.title('这是一个GUI界面')
my_calendar.geometry('500x500')
button1 = Button(my_calendar, text = "欢迎")
button1.place(x = 0, y = 0)
button2 = Button(my_calendar, text = "光临")
button2.place(x = 50, y = 50)
my_calendar.mainloop()