Updated 2014-03-02 02:31:21 by pooryorick

piemenu is a package to create pie menus.

Disambiguation  edit

piemenu for Tk ,by Don Hopkins

Description  edit

Current version : Beta, 0.3, home [1], download [2], manual (draft) [3]

This is an ongoing project. Hopefully this or some other incarnation of pie menus will prove to be a good widget for Tk. Lack of anti-aliasing and transparency is a problem in creating good looking curved canvas buttons. Ideas and help are invited and welcome. dzach

This package provides a single command piemenu, in a similar manner with Tk's menu command. The piemenu command is used to create either a toplevel or a canvas menu. If the parent of the pathName provided at creation time is a canvas widget, then the pie menu is created in that canvas. Otherwise it is created in a new toplevel window.

Here is an example of how a pie menu looks like:

Why use a pie menu ?

  • The main reason is because it's far easier to use on touch screens, on mobile devices where simplicity matters.
  • It has different aesthetics than the usual rectangular popup or drop down menus, and can make tcl/tk look nice.
  • Round shapes are usually easier to the eye (can be easily made cluttered though, like everything else).
  • It can help give a minimalistic appearance to an interface, when this is a requirement (e.g. OLPC's Sugar interface [4]).
  • It gives the benefits of applying Fitts's Law [5] to popup menus.


The piemenu package code needs improvement, so bug reports and patches are welcome.

schlenk Did you consider to put this into tklib? Looks like a nice and useful package.

dzach I think it needs further development. It's still in beta, and there are a number of subcommands that are similar to tk's menu command that are not yet implemented. There is also the possibility to make a round (or elliptical) popup piemenu that does not show a rectangular top level window. However, if putting it in tklib would help develop it further, by attracting some more developers who find it useful, I'd be glad to.