O'Reilly logo

Web, Graphics & Perl/Tk Programming by Jon Orwant

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 37. Events

Steve Lidie

event (î-vênt’): something that happens: a noteworthy occurrence or happening: something worthy of remark: an unusual or significant development. (Paraphrased from Webster’s Third.)

Events are what drive Perl/Tk programs. In the past I’ve described these events superficially, sweeping lots of detail under the MainLoop rug, all for the sake of simplicity. MainLoop is our friend, since it’s all that is needed for nearly every Perl/Tk program. But sometimes it’s not enough.

Today’s featured program is a simple Pong-like game sporting a new widget derived from the Canvas class, which we’ll compare to the Odometer composite widget described in The Mouse Odometer. Instead of using MainLoop, our Pong game handles events itself with DoOneEvent.

Before discussing Pong, we’ll examine some other programs, including a simple animation called neko, demonstrating the Photo widget and some other Tk commands.

Tk defines four broad event categories: X, timer, input/output, and idle. X events are generated in response to mouse motion, button and keyboard actions, and window changes. You already know that many of these events have built-in Tk bindings, and that you can create your own bindings, so all you need to do is define the callback to handle the event. (There are lots of other X events, which we’ll examine in detail in subsequent articles.) Timer events are used for periodic occurrences, from blinking items to animating images. Input/output events help prevent your ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required