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,padyx/y方向的外部填充。在插件外部,左右(上下)方向各填充指定长度的空间
ipadx,ipadyx/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对象实例的主要参数:
在这里插入图片描述

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值