Python之UI界面开发库Tkinter

Tkinter库简介

Tkinter是python的标准GUI库,且是内置在python安装包中的库。

  • 创建第一个窗体
import tkinter

mac = tkinter.Tk()  # 初始化Tk()创建Mac窗口对象
mac.title("第一个Tkinter")  # 设置窗口标题
mac.geometry("![600x400+0+0](https://img-blog.csdnimg.cn/20200817092121563.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ1MzM4MDY3,size_16,color_FFFFFF,t_70#pic_center)
")  # 设置窗口大小 格式为"widthxheight+x+y"
mac.mainloop()

运行结果:
在这里插入图片描述

  • 几何布局管理器(geometry manager)
    用于组织和管理在父组件中子组件的布局方式,Tkinter提供了3中不同的风格:pack,grid和place。

1. pack:
采用块的方式组织组件。
调用子组件方法pack(),则该子组件在其父组件中采取pack布局。

pack函数提供的参数:

option 解释 取值范围
side 停靠在父组件的哪一边上 ‘top’(默认值), ‘bottom’, ‘left’, ‘right’
fill 填充空间 ’x’, ‘y’, ‘both’, ‘none’
anchor 停靠位置,对应于东南西北以及四个角 ‘n’, ‘s’, ‘e’, ‘w’, ‘nw’, ‘ne’, ‘sw’, ‘se’, ‘center’(默认值)
expand 扩展空间 0或1
ipadx, ipady 组件内部在x/y方向上填充的空间大小 单位为c(厘米),m, i(英寸), p(打印机的点)
padx, pady 组件外部在x/y方向上填充空间的大小 单位为c(厘米),m, i(英寸), p(打印机的点)

举例说明:

import tkinter

mac = tkinter.Tk()  # 初始化Tk()创建Mac窗口对象
mac.geometry("200x100+0+0")
label = tkinter.Label(mac,text="Hello,python.")
label.pack()
button1 = tkinter.Button(mac, text="BUTTON1")
button1.pack(side=tkinter.LEFT)
button2 = tkinter.Button(mac, text="BUTTON2")
button2.pack(side=tkinter.RIGHT)
mac.mainloop()

运行结果:
在这里插入图片描述

2. grid:
采用表结构组织组件。
调用子组件方法grid(),则该子组件在其父组件中采取grid布局。

gird函数提供的参数:

option 解释
column 插件摆放的列数值,从0开始,默认为0。
columnpan (在正常情况下,一个插件只占一个单元。)合并一行中的多个近邻单元
row 插件摆放的行数值,从0开始,默认为0。
rowspan 合并一列中的多个近邻单元
padx,pady x/y方向的外部填充。在插件外部,左右(上下)方向各填充指定长度的空间
ipadx,ipady x/y方向的内部填充。在插件内部,左右(上下)方向各填充指定长度的空间
sticky 在插件正常尺寸下,如何分配单元中多余的空间,具体如下:
  • 如果没有声明sticky,默认将插件居中与单元中
  • sticky=tk.N/E/W/S/NE/NW/SW/SE,将插件布局在单元的某个方向上。
  • sticy=tk.N+tk.S,在垂直方向上延伸插件,并且保持水平居中。
  • sticky=tk.E+tk.W,在水平方向上延伸插件,并且保持垂直居中。
  • sticky=tk.N+tk.S+tk.W+tk.E,所有方向延伸插件,填满单元。

3. place:

允许指定组件的大小和位置,优点是可以精确控制组件的位置,缺点是改变窗口大小时,子组件不能随之灵活改变大小。
调用子组件方法place(),则该子组件在其父组件中采取place布局。

place函数提供的参数:

option 解释 取值范围
x, y 绝对坐标 从0开始的整数
relx,rely 相对坐标 0~1.0
height, weight 高度和宽度 单位为像素
anchor 对齐方式 ‘n’, ‘s’, ‘e’, ‘w’, ‘nw’, ‘ne’, ‘sw’, ‘se’, ‘center’(默认值)

举例说明:

import tkinter

mac = tkinter.Tk()  # 初始化Tk()创建Mac窗口对象
mac["width"]=220
mac["height"]=90
mac.title("登录")
tkinter.Label(mac, text="用户名", width=6).place(x=1,y=5)
tkinter.Entry(mac, width=15).place(x=55,y=5)
tkinter.Label(mac, text="密码", width=6).place(x=1,y=25)
tkinter.Entry(mac, width=15, show='*').place(x=55,y=25)
tkinter.Button(mac, text="登录", width=8).place(x=30,y=60)
tkinter.Button(mac, text="取消", width=8).place(x=100,y=60)
mac.mainloop()

运行结果:

在这里插入图片描述

Tkinter组件

组件名称 含义
Button 按钮
Canvas 画布(提供绘图功能)
CheckButton 多选框
Entry 文本框
Frame 框架(包含其他组件的纯容器)
Label 标签
ListBox 列表框
Menu 菜单(点击弹出选项列表)
Menubutton 菜单按钮(有下拉式、层叠式等)
Message 消息框(可以显示多行文本)
Radiobutton 一组按钮但是只有一个可以被按下
Scale 进度条
Scrollbar 滚动条(对其支持的组件提供滚动功能)
Text 多行文字区域

还有一些其他不常用的控件:
在这里插入图片描述
标准属性
在这里插入图片描述
可以通过如下三种方法修改属性:

button1 = Tkinter.Button(root, text="Yes")  # 按钮组件的构造函数
button1.config(text="Yes")  # 组件对象的config方法
button1["text"] = "Yes"  # 组件对象的属性赋值

常用组件举例:

  1. Label:用于在窗体中显示文本或位图。在这里插入图片描述

在这里插入图片描述
举例说明:

from tkinter import *
import tkinter

mac = tkinter.Tk()  # 初始化Tk()创建Mac窗口对象
mac.title("My Window")
lb1 = Label(mac, height = 5, text="Hello!")
lb1.pack()
bm = PhotoImage(file = r"/Users/lilhoe/Desktop/Python/pygame/壁球/PYG03-pink-flower.png")
lb2 = Label(mac,image = bm)
lb2.pack()
mac.mainloop()

运行结果:
在这里插入图片描述

  1. Label:按钮可以包含文本、图像,可以通过command属性将调用的Python函数或方法关联到按钮上。
    button的属性:

在这里插入图片描述
3. 单行文本框Entry
在这里插入图片描述
entry可以通过.get()函数获取用户输入的内容。

  1. 多行文本框Text
    新创建的Text内容为空,可以通过.insert(标记,内容)在标记处插入文本内容。标记可以是行号或者以下标识:INSERT插入点,END最后字符,CURRENT鼠标当前位置。

  2. 画布Canvas

canvas常用选项:
在这里插入图片描述
6. 字体Font
通过元组表示:(字体名font family,字体大小size,修饰符modifiers)

python事件处理

事件类型的通用格式:<[modifier-]…type[-detail]>

组合键定义中常用的modifier:
在这里插入图片描述

对于每一个组件来说,可以通过bind()方法将将自己定义的函数绑定到具体事件上,主要有键盘、鼠标、窗体事件三类。

键盘事件
在这里插入图片描述
鼠标事件
在这里插入图片描述
窗体事件
在这里插入图片描述

事件绑定

1. 创建组件对象时指定

创建组件对象实例时,可以通过command参数传递函数名(不是函数调用)。
2.实例绑定
.bind(“事件类型”, 函数名)
3.类绑定
组件实例名.bind_class(“组件类”, “<事件类型>”, 事件处理函数)

事件处理函数

事件处理函数往往带有一个参数event,触发事件调用事件处理函数时,将传递Event对象实例。
event对象实例的主要参数:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_45338067/article/details/108048477