tkinter 事件与绑定

tkinter 事件与绑定,第1张

tkinter 使用 <modifier-type-detail> 用于描述事件

字段是事件说明符中最重要的部分。它指定了我们希望绑定的事件类型,可以是诸如 Button Key 之类的用户 *** 作,也可以是诸如 Enter Configure 等其他窗口管理器事件。 和 字段用于提供其他信息,在许多情况下可以省略。还有多种方法可以简化事件字符串。例如,要匹配键盘键,您可以省去尖括号(除非是空格或尖括号不可省略),而只需按原样使用键即可。

下面讨论一些常见的事件。

Button 1 是最左边的(leftmost)按钮, Button 2 是中间按钮(如果有), Button 3 是最右边的按钮。当您在小部件上按下鼠标按钮时,tkinter 将自动“抓住”(grab)鼠标指针(the mouse pointer),随后即使将鼠标移到当前窗口小部件之外,只要按住鼠标按钮,随后的鼠标事件(例如,Motion 和 Release 事件)就会发送到当前小部件。鼠标指针的当前位置(相对于小部件)由传递给回调的事件对象的 x y 成员变量提供。( <Button-1> = <ButtonPress-1> = <1> )。

下表列出常见的几个事件:

看一个例子:

实际上,您可以在四个不同级别上创建绑定:

还可以使用 Protocols 绑定事件。最常用的 protocol 称为 WM_DELETE_WINDOW ,用于定义当用户使用窗口管理器显式关闭窗口时发生的情况。

您可以使用 protocol 方法来为此协议安装处理程序(小部件必须是根或 Toplevel 插件):

一旦安装了自己的处理程序,tkinter 将不再自动关闭窗口。相反,您可以显示一个消息框,询问用户是否应保存当前数据,或者在某些情况下,只需忽略请求即可。要从此处理程序关闭窗口,只需调用窗口的 destroy 方法:

实际上,您可以在四个不同级别上创建绑定:

例如,您可以使用 bind_all 为 F1 键创建一个绑定,因此您可以在应用程序的任何地方提供帮助。但是,如果您为同一个键创建多个绑定,或者提供重叠的绑定,会发生什么呢?

首先,在这四个级别中的每个级别上,tkinter 都会选择可用绑定的“最匹配”。 例如,如果您为 <Key> 和 <Return> 事件创建实例绑定,则在按下 Enter 键时将仅调用第二个绑定。

但是,如果将 <Return> 绑定添加到顶级窗口小部件,则两个绑定都将被调用。tkinter 首先在实例级别调用最佳绑定,然后在顶级窗口级别调用最佳绑定,然后在类级别调用最佳绑定(通常是标准绑定),最后在应用程序级别调用最佳可用绑定。因此,在极端情况下,单个事件可能会调用四个事件处理程序。

除了事件绑定,tkinter 还支持一种称为协议处理程序(protocol handlers)的机制。在这里,术语协议(protocol)是指应用程序和窗口管理器之间的交互。最常用的协议称为 WM_DELETE_WINDOW ,用于定义当用户使用窗口管理器显式关闭窗口时发生的情况。

您可以使用协议方法来为此协议安装处理程序(小部件必须是 root 或者 Toplevel 小部件):

一旦安装了自己的处理程序,tkinter 将不再自动关闭窗口。相反,您可以例如显示一个消息框,询问用户是否应保存当前数据,或者在某些情况下,只需忽略请求即可。 要从此处理程序关闭窗口,只需调用窗口的 destroy 方法。

请注意,即使您没有在顶级窗口上注册 WM_DELETE_WINDOW 的处理程序,该窗口本身也将像往常一样被销毁(以可控的方式,不同于 X)。但是,从Python 152开始,Tkinter不会破坏相应的小部件实例层次结构,因此始终自己注册一个处理程序是一个好主意:

Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

对于稍有GUI编程经验的人来说,Python的Tkinter界面库是非常简单的。python的GUI库非常多,选择Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,Python作为一种脚本语言,一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势,使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任的!

python tkinter教程,一起来看看吧:

Tkinter是Python的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序。由于 Tkinter 是内置到python的安装包中,只要安装好Python之后就能import Tkinter库,而且IDLE也是用Tkinter编写而成,对于简单的图形界面Tkinter还是能应付自如。

使用

导入

import tkinter

注意:Python3x 版本使用的库名为 tkinter,即首写字母 T 为小写。

创建一个GUI程序

1、导入 Tkinter 模块

2、创建控件

3、指定这个控件的 master, 即这个控件属于哪一个

4、告诉 GM(geometry manager) 有一个控件产生了。

#!/usr/bin/python3  import tkinter top = tkinterTk() # 进入消息循环 topmainloop()

窗口主体框架 

每一个 tkinter 应用的主体框架都可以包含下面这部分 定义 window 窗口 和 window的一些属性, 然后书写窗口内容, 最后执行windowmainloop让窗口活起来

import tkinter as tk window = tkTk() windowtitle('my window') windowgeometry('500x500') #注意:这里的乘是×不是 # 这里是窗口的内容 windowmainloop()

 窗口内容

 Label & Button 标签和按钮

这次我们会建立一个用来描述的标签 tkLabel, 比如:

import tkinter as tk #创建窗口 window=tkTk() windowtitle('Mywindow')#窗口的标题 windowgeometry('200x100')#窗口的大小 #定义一个lable l = tkLabel(window,      text='Hi! this is TK!',    # 标签的文字     bg='green',     # 标签背景颜色     font=('Arial', 12),     # 字体和字体大小     width=15, height=2  # 标签长宽(以字符长度计算)     ) lpack()    # 固定窗口位置 windowmainloop()

mainloop () 你可以把它看做是 while True:

只是循环内的代码tkinter已经给你写好了,这些代码主要是检测窗口相应的各种事件,比如鼠标移动、点击、输入、按键 *** 作等等。

所以你写在mainloop()后面的代码是不会被执行的。

如果是界面加载完成,要计划执行一些语句,就需要用到多线程,在mainloop()之前开启线程。

tkinterTk,也有一个after方法可以实现类似多线程的处理,不过效果要差一些,如意出现程序假死,也就是程序未响应,但实际程序在运行

以上就是关于tkinter 事件与绑定全部的内容,包括:tkinter 事件与绑定、python怎么用tkinter、python tkinter教程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10169551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存