Tkinter中的自定义事件 [英] Custom events in 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屋!