Python笔记_第四篇_高阶编程_GUI编程之Tkinter_5.鼠标事件
1. 鼠标点击事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event): # 事件属性
print(event.x,event.y) # 小控件局域x轴和y轴的举例 # 绑定事件:
# bind:参数1绑定事件,参数2绑定这个事件的函数
# 事件内容:
# <Button-> -鼠标左键 -鼠标滚轮 -鼠标右键
# <Double-Button-> -鼠标左键双击 -鼠标滚轮双击 -鼠标右键双击
# <Triple-Button-> 同上:变为三击
button1 = tkinter.Button(win,text="leftmouse button")
button1.bind("<Button-1>",func) #更换事件
button1.pack() # 保持循环不让窗口关闭__编程尾部
win.mainloop()
2. 鼠标移动事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event): # 事件属性
print(event.x,event.y) # 小控件局域x轴和y轴的举例 # 绑定事件:
# bind:参数1绑定事件,参数2绑定这个事件的函数
# <B1-Motion> -表示鼠标左键移动 -表示鼠标中键移动 -表示鼠标右键移动
# 按住事件内容拖动就会出现。 # 事件内容:
label1 = tkinter.Label(win,text="Thomas is a good man")
label1.pack()
#
label1.bind("<B1-Motion>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
3. 鼠标释放事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event): # 事件属性
print(event.x,event.y) # 小控件局域x轴和y轴的举例 # 绑定事件:
# bind:参数1绑定事件,参数2绑定这个事件的函数
# <ButtonRelease-> -表示释放鼠标左键 -表示释放鼠标中键 -表示释放鼠标右键
#
# 事件内容:
label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
label1.pack()
#
label1.bind("<ButtonRelease-1>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
4. 进入与离开事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event): # 事件属性
print(event.x,event.y) # 小控件局域x轴和y轴的举例 # 绑定事件:
# bind:参数1绑定事件,参数2绑定这个事件的函数
# <Enter>:鼠标光标进入控件时触发
# <Leave>:鼠标光标离开控件时触发
# 事件内容:
label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
label1.pack()
#
label1.bind("<Enter>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
5. 响应所有按键的事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # def func(event):
# print("event.chr=",event.char)
# print("event.keycode=", event.keycode) # # 响应所有按键的事件1
# # <Key>:响应所有按键的事件,从键盘输入任何键
# label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
# label1.focus_set() # 设置焦点
# label1.pack()
# #
# label1.bind("<Key>",func) # 响应所有按键的事件2,直接给窗体设置响应,不用再设置焦点了。
def func(event):
print("event.chr=",event.char)
print("event.keycode=", event.keycode)
win.bind("<Key>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
6. 响应特殊按键事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event):
print("event.chr=",event.char)
print("event.keycode=", event.keycode) # 响应特殊按键的事件
# <Shift_L>:L-响应的是左侧的Shift,R-响应的是右侧的Shift
# <F5>:
# <Return>:当单击回车键的时候
# <BackSpace>:退格键
label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
label1.focus_set() # 设置焦点
label1.pack()
#
label1.bind("<Shift_L>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
7. 指定按键事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event):
print("event.chr=",event.char)
print("event.keycode=", event.keycode) # 指定按键事件:
# a:指定键盘的a,响应事件,直接写按键的名
label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
label1.focus_set() # 设置焦点
label1.pack()
#
label1.bind("a",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
8. 组合按键事件:
图示:
实例:
import tkinter
from tkinter import ttk # 创建主窗口__编程头部
win = tkinter.Tk()
# 设置标题
win.title("Thomas的窗口")
# 设置大小和位置
win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 def func(event):
print("event.chr=",event.char)
print("event.keycode=", event.keycode) # 组合按键事件:
# <Control-Alt-b>:同时按下这三个键响应事件
# <Shift-Up>:
label1 = tkinter.Label(win,text="Thomas is a good man",bg="red")
label1.focus_set() # 设置焦点
label1.pack()
#
label1.bind("<Control-Alt-b>",func) # 保持循环不让窗口关闭__编程尾部
win.mainloop()
Python笔记_第四篇_高阶编程_GUI编程之Tkinter_5.鼠标事件的更多相关文章
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述
1. GUI概述: GUI全称为Graphical User Interface,叫做图形用户界面,也是一种交互方式(Interaction).早期计算机使用的命令行界面(command-line i ...
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_3.数据显示
1. 表格数据显示: 图示: 实例: import tkinter from tkinter import ttk # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 wi ...
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_2.控件类
1. Label控件: 说明:标签控件,可显示文本 图示1: 实例1: import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title ...
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_6.附录
1. 事件附录: 2. 事件属性附录:
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_4.布局
1. 绝对布局: 图示: 实例: import tkinter from tkinter import ttk # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win. ...
- Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速
Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...
- Python开发【第十三篇】高阶函数、递归函数、闭包
函数式编程是指用一系列函数解决问题 好处:用每个函数完成每个细小的功能,一系列函数任意组合能够解决大问题 函数仅仅接收输入并产生输出,不包含任何能影响输出的内部状态 函数之间的可重入性 当一个函数的输 ...
- python学习三十四天函数高阶函数定义及用法
python函数高阶函数是把函数当成一个变量,传递给函数作为参数,或者函数的返回值里面有函数,都称为高阶函数, 1,把函数作为参数传递 def dac(x,y): return x+y def tes ...
- Python笔记_第四篇_高阶编程_实例化方法、静态方法、类方法和属性方法概念的解析。
1.先叙述静态方法: 我们知道Python调用类的方法的时候都要进行一个实例化的处理.在面向对象中,一把存在静态类,静态方法,动态类.动态方法等乱七八糟的这么一些叫法.其实这些东西看起来抽象,但是很好 ...
随机推荐
- 【LeetCode】206. 反转链表
题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...
- PHP购物网站
我使用的phpsteam经常用着用着就闪退,所以做起来挺麻烦的.里面的代码有抄袭借鉴网上的代码,就是那个php做购物网站点击量最高的那个. 但是我很多代码也是自己写的不和其相同. PHP是一门选修课, ...
- HDU - 6025 Coprime Sequence(前缀gcd+后缀gcd)
题意:去除数列中的一个数字,使去除后数列中所有数字的gcd尽可能大. 分析:这个题所谓的Coprime Sequence,就是个例子而已嘛,题目中没有任何语句说明给定的数列所有数字gcd一定为1→_→ ...
- 澳洲Essay写作常见误区汇总
近年来,想要不断提升自己开拓视野选择留学的学生越来越多,留学生们对于澳洲essay的写作并不生疏,可是许多人并不能很好地完成澳洲essay的写作,因为留学生们对于澳洲essay写作并不怎么了解.其实, ...
- 201903-2 二十四点 Java
思路: 数据结构中,栈可以解决运算的问题.利用压栈和弹栈操作实现(这里用队列模拟).具体的: 遇到乘除号,弹出栈顶元素,将计算结果压入栈中.遇到加减号,将后面的数一起压入栈中. 注意: substri ...
- ETL优化
ETL优化 Extract.Transform.Load,对异构数据源进行数据处理. 设立基线标准,根据硬盘.网络传输速度,多测测量得到数据量(m)/时间(s)的比值,找线性关系.建立基线作为调试和优 ...
- Golang---序列化和反序列化
为什么要序列化和反序列化 我们的数据对象要在网络中传输或保存到文件,就需要对其编码和解码动作,目前存在很多编码格式:json, XML, Gob, Google Protocol Buffer 等, ...
- MyBatis:分页的实现
日志工厂 思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题. 对于以往的 ...
- Java四类八种
四类: 整数类型,浮点类型,字符型,布尔型 八种: byte,short,int,long,float,double,char,boolean
- 用Pandas Dataframe来架构起金融股票数据的内部形态
2. 金融股票数据的另一个形态,怎样在业务内部流动,同时怎样避免错误 前一篇讲解了股票的原始状态,那麽在业务过程中,数据会变成怎样的形态,来完成众多奇奇怪怪的业务呢,以下将会解答. 首先,任何股票都有 ...