python图形界面化编程GUI(三)事件绑定(鼠标和键盘、OptionMenu、scale、颜色、文件对话框、菜单和工具栏、ttk子模块)

常用组件汇总

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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值