美文网首页
tkinker 组件 事件绑定

tkinker 组件 事件绑定

作者: HC2 | 来源:发表于2022-01-17 08:44 被阅读0次

一个 Tkinter 应用程序大部分时间花费在事件循环中(通过 mainloop() 方法进入)。事件可以有各种来源:包括用户触发的鼠标和键盘操作和窗口管理器触发的重绘事件(在多数情况下是由用户间接引起的)。

Tkinter 提供一个强大的机制可以让你自由地处理事件,对于每个组件来说,你可以通过 bind() 方法将函数或方法绑定到具体的事件上。

当被触发的事件满足该组件绑定的事件时,Tkinter 就会带着事件对象(Event)去调用 handler() 方法。

将鼠标点击事件(<Button-1>)与我们自定义的 callback() 方法绑定起来

import tkinter as tk
window = tk.Tk()
window.title('hello thinter')
height = window.winfo_screenheight()
width = window.winfo_screenwidth()
window.geometry('400x300+%d+%d' % ((width - 400) / 2, (height - 300) / 2))

def callback(event):
    print("点击位置:", event.x, event.y)

frame = tk.Frame(window, width=200, height=200)
frame.bind("<Button-1>", callback)
frame.pack()

window.mainloop()

绑定键盘事件

import tkinter as tk
window = tk.Tk()
window.title('hello thinter')
height = window.winfo_screenheight()
width = window.winfo_screenwidth()
window.geometry('400x300+%d+%d' % ((width - 400) / 2, (height - 300) / 2))

def callback(event):
    print("点击的键盘字符为:", event.char)

frame = tk.Frame(window, width=200, height=200)
frame.bind("<Key>", callback)
frame.focus_set()
frame.pack()

window.mainloop()

鼠标活动轨迹

import tkinter as tk
window = tk.Tk()
window.title('hello thinter')
height = window.winfo_screenheight()
width = window.winfo_screenwidth()
window.geometry('400x300+%d+%d' % ((width - 400) / 2, (height - 300) / 2))
def callback(event):
    print("当前位置为:", event.x, event.y)

frame = tk.Frame(window, width=200, height=200)
frame.bind("<Motion>", callback)
frame.pack()

window.mainloop()

下方主要内容:

事件序列
type
modifier
Event 对象
Key names
事件序列

Tkinter 使用一种称为事件序列的机制来允许用户定义事件,用户需使用 bind() 方法将具体的事件序列与自定义的方法相绑定。事件序列是以字符串的形式表示的,可以表示一个或多个相关联的事件(如果是多个事件,那么对应的方法只有在满足所有事件的前提下才会被调用)。

事件序列使用以下语法描述:

<modifier-type-detail>

事件序列是包含在尖括号(<...>)中
type 部分的内容是最重要的,它通常用于描述普通的事件类型,例如鼠标点击或键盘按键点击(详见下方)。
modifier 部分的内容是可选的,它通常用于描述组合键,例如 Ctrl + c,Shift + 鼠标左键点击(详见下方)。
detail 部分的内容是可选的,它通常用于描述具体的按键,例如 Button-1 表示鼠标左键。

事件序列 含义
<Button-1> 用户点击鼠标左键
<KeyPress-H> 用户点击 H 按键
<Control-Shift-KeyPress-H> 用户同时点击 Ctrl + Shift + H

image.png image.png

modifier

image.png

Event 对象

image.png

Key names

image.png
image.png image.png image.png

相关文章

  • tkinker 组件 事件绑定

    一个 Tkinter 应用程序大部分时间花费在事件循环中(通过 mainloop() 方法进入)。事件可以有各种来...

  • vue组件学习2

    一.子组件向父组件传递数据 方法:子组件绑定子组件的自定义事件,但事件处理函数绑定父组件的方法 1.

  • 小程序防止多次点击

    1. 写两个一样的组件, 一个有事件绑定, 一个没有, 当点击有事件绑定的组件的时候,同时隐藏有事件绑定的组件,显...

  • vue父子组件通过props和emit实现通信

    emit 子组件:子组件通过$emit方法触发父组件中的parentAction事件绑定的方法 父组件父组件中绑定...

  • Vue.js第3课-深入理解Vue组件(part02)

    四、给组件绑定原生事件 如何给组件绑定原生事件? 我们首先编写一个全局的子组件 child,在父组件的模板里先试一...

  • (十二)给组件绑定原生事件

    本节知识点 给组件绑定原生事件 代码实现 因为自定义组件要想绑定事件必须监听子组件发射过来的事件。而要是用原生的就...

  • vue其他知识点简单记录

    路由: 过渡动画 组件 数据绑定 事件 方法:事件可以调用方法 子父组件传值 插槽 动态组件

  • ReacNative使用Navigation构建完整应用(三)

    一、Preview 二、事件的绑定,组件间传递 事件绑定有两种方式 1.使用肩头函数绑定自动绑定This

  • 微信小程序:事件浅晰

    关于小程序的事件,我们知道的是,在组件上面绑定对应的响应事件,用户在这个组件上操作就会触发预先绑定的事件,执行我们...

  • 微信小程序公共组件的引用与控制

    思路: 1.在组件wxml文件里实现布局、数据绑定、事件绑定; 2.组件js文件里定义事件,并将文件所有内容作为一...

网友评论

      本文标题:tkinker 组件 事件绑定

      本文链接:https://www.haomeiwen.com/subject/duzkcrtx.html