Menus de Torta com Python e Cairo

Um tempinho atrás experimentei fazer uma interface do tipo pie menu, aqueles menus circulares, usando Python e Cairo. A idéia era usar num tipo de arena de combate usando marcadores para representar os lutadores, com ações escolhidas em menus de contexto circulares.

Melhor um screencast que palavras:

Veja o código aqui. Os arquivos são arena.py (execute este), p_token.py e piemenu.py.
Ou use o subversion:

svn checkout http://setanta-labs.googlecode.com/svn/trunk/pycairo piemenu

Funciona assim: a classe Arena é um widget que pode conter objetos da classe Token (os marcadores representando personagens), estes por sua vez contém um objeto da classe PieMenu, que é composto por vários itens.

Em código:

arena = Arena()

piemenu = PieMenu()
piemenu.add_item('icon1.png', do_callback, 2) # (icon, callback function, callback params...)
piemenu.add_item('icon2.png', do_callback)

token = Token((200, 100), 'token-icon.png', piemenu) # (position, icon, menu)

arena.add_token(token)

Então você adiciona a Arena num container qualquer e está pronto.

Anúncios