Tkinter中的自定义事件 [英] Custom events in Tkinter

查看:370
本文介绍了Tkinter中的自定义事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Tkinter的新人.
我想知道有什么方法可以捕获一些小部件的自定义事件,
例如在widget.pack()之后捕获on_packed事件,还是在画布上绘制一些图形后在画布小部件上捕获on_paint事件?

I am new in Tkinter.
And I want to know is there any way to catch some custom events for widgets,
for example catch on_packed event after widget.pack() or on_paint event for canvas widget after drawing some graphics on canvas, etc?

推荐答案

您描述的事件不存在.如果需要,可以使用event_generate方法创建自己的自定义事件.这样,您可以创建自己的小部件类,以发出所需的任何自定义事件.

The events you describe don't exist. You can use the event_generate method to create your own custom events if you wish. With that you could create your own widget classes that emit any custom events you want.

自定义事件必须始终用双尖括号定义.例如,以下代码行将创建一个名为<<OnPaint>>的事件:

Custom events must always be defined with double angle brackets. For example, the following line of code will create an event named <<OnPaint>>:

the_canvas.event_generate("<<OnPaint>>")

然后您可以绑定到该事件,就像执行其他任何事件一样:

You can then bind to that event just like you do any other event:

the_canvas.bind("<<OnPaint>>", do_on_paint)

on_pack的特定情况下,有些事件可能在更抽象的级别上满足您的要求.例如,有些事件会在小部件变为可见(<Visibility>),更改大小(<Configure>)以及其他一些事件时触发.

In the specific case of on_pack, there are events that probably do what you want at a more abstract level. For example, there are events that fire when a widget becomes visible (<Visibility>), changes size (<Configure>), and a few others.

tcl/tk官方文档列出了受支持的事件.请参见绑定手册页.

The official tcl/tk documentation lists supported events. See the bind man page.

这篇关于Tkinter中的自定义事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆