常用组件汇总
| Tkinter类 | 名称 | 简介 |
|---|---|---|
| Toplevel | 顶层 | 容器类,可用于为其他组件提供单独的容器,类似于窗口 |
| Button | 按钮 | 代表按钮组件 |
| Canvas | 画布 | 提供绘图功能,包括直线、矩形、椭圆、多边形、位图等 |
| Entry | 单行输入框 | 用户可输入内容 |
| Frame | 容器 | 用于装载其他GUI组件 |
| Label | 标签 | 用于显示不可编辑的文本或图标 |
| LabelFrame | 容器 | 容器组件,类似于Frame,支持添加标题 |
| Listbox | 列表框 | 列出多个选项,供用户选择 |
| Menu | 菜单 | 菜单组件 |
| Menubutton | 菜单按钮 | 用来包含菜单的按钮(包括下拉式、层叠式等) |
| OptionMenu | 菜单按钮 | Menubutton的子类,通过按钮打开一个菜单 |
| Message | 消息框 | 类似于标签,但可以显示多行文本 |
| PanedWindow | 分区窗口 | 该容器被划分为多个区域,每添加一个组件占一个区域,用户可以通过拖动分隔线来改变各区域大小 |
| Radiobutton | 单选钮 | 可供用户点的单选钮 |
| Scale | 滑动条 | 拖动滑块可以设置起始值和结束值,可显示当前位置的精确值菜单 |
| Spinbox | 微调选择器 | 用户可通过该组件的向上、向下箭头选择不同的值 |
| Scrollbar | 滚动条 | 用于为组件(文本域、画布、列表框、文本框)提供滚动功能 |
| Text | 多行文本框 | 用于显示多行文本 |
事件处理
⼀个 GUI 应用整个生命周期都处在⼀个消息循环 (event loop) 中。等待事件的发生,并作出相应的处理,点击一下按钮,就触发相应的事件,实现相应的功能。 Tkinter 提供了⽤以处理相关事件的机制,处理函数可被绑 定给各个控件的各种事件。
鼠标和键盘
| 代码 | 说明 |
|---|---|
| < Button-1 > < ButtonPress-1 > < 1 > | 1鼠标左键按下,2表示中间,3是右键 |
| < ButtonRelease-1 > | 鼠标左键释放 |
| < B1-Motion > | 按住鼠标左键移动 |
| < Double-Button-1 > | 双击鼠标左键 |
| < Enter > | 鼠标指针进入某一组件区域 |
| < Leave > | 鼠标指针离开某一组件区域 |
| < MouseWheel > | 滚动滚轮 |
| < KeyPress-a > | 按下a键,a可以用其他键代替 |
| < KeyRelease-a > | 释放a键 |
| < KeyPress-A > | 按下A键 |
| < Alt-KeyPress-a > | 同时按下alt和a键;alt可用shift和ctrl代替 |
| < Double-KeyPress-a > | 快速按两下a键 |
| < Control-V > | ctrl和v键同时按下,v可以换成其他键 |
点击按钮和事件绑定
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.geometry('500x300+100+100')
# 定义函数的功能
# 点击时两个功能:1.打印文字,2.消息框内显示文字
def button_command():
print('你点击了按钮')
messagebox.showinfo('message','你点击了按钮')
# 1.command绑定事件
btn = tk.Button(root,text='确定',command=button_command)
btn.pack()
# 2.使用config方法配置参数
btn = tk.Button(root,text='确定1')
btn.pack()
btn.config(command=button_command)
# 3.使用对象的属性配置参数
btn = tk.Button(root,text='确定2')
btn.pack()
btn['command']=button_command
# 4.bind绑定事件
def button_command1(event): # 此时必须要设置形参,但并不使用
print('你点击了按钮')
messagebox.showinfo('message','你点击了按钮')
btn = tk.Button(root,text='确定3')
btn.pack()
btn.bind('<Button-1>',button_command1)
# 此方法会出现按钮按下去按不上来的情况(跟消息框有关),可以重复点击,显示的内容是一样的,可以把1改为2,3
root.mainloop()

event对象
| 名称 | 说明 |
|---|---|
| char | 按键字符,仅对键盘事件有效 |
| keycode | 按键编码,仅对键盘事件有效 |
| keysym | 按键名称,仅对键盘事件有效 如按下空格键,键的char:空格,keycode:32,keysym:space;按下a键,键的char:a,keycode:65,keysym:a |
| num | 鼠标按键,仅对鼠标事件有效 |
| type | 所触发的事件类型 |
| widget | 引起事件的组件 |
| width,height | 组件改变后的大小,仅Configure有效 |
| x,y | 鼠标当前位置,相对于父容器 |
| x_root,y_root | 鼠标当前位置,相对于整个屏幕 |
lambda表达式
lambda 表达式定义的是⼀个匿名函数,只适合简单输入参数,简单计算返回结果,不适合功能复杂情况。 lambda 定义的匿名函数也有输入、也有输出,只是没有名字。
语法格式如下:
lambda 参数值列表:表达式
参数值列表即为输⼊。
表达式计算的结构即为输出。
lambda 表达式的参数值列表可以为如下内容:
| lambda格式 | 说明 |
|---|---|
| lambda x,y: x*y | 函数的输入是x,y,输出是乘积x*y |
| lambda:None | 函数没有输入参数,输出是None |
| lambda:aaa(3,4) | 函数没有输入,输出是aaa(3,4)的结果 |
| lambda *args: sum(args) | 输入是任意个数的参数,输出是他们的和 |
| lambda **kwargs: 1 | 输入是任意键值对参数,输出是1 |
带参数的事件绑定
点击后显示你点击了按钮,打印1+2=3,1和2为实参传入
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.geometry(

最低0.47元/天 解锁文章
340

被折叠的 条评论
为什么被折叠?



