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-1> 1-鼠标左键 2-鼠标滚轮 3-鼠标右键
# <Double-Button-1> 1-鼠标左键双击    2-鼠标滚轮双击    3-鼠标右键双击
# <Triple-Button-1> 同上:变为三击
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> 1-表示鼠标左键移动    2-表示鼠标中键移动  3-表示鼠标右键移动
# 按住事件内容拖动就会出现。

# 事件内容:
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-1> 1-表示释放鼠标左键    2-表示释放鼠标中键  3-表示释放鼠标右键
#
# 事件内容:
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()

猜你喜欢

转载自www.cnblogs.com/noah0532/p/10887015.html