I have felt the same, thinking back to handling xml in the past. I was thinking that you draw a SVG in inkscape, which xml is read for python UI.
It looks like its a pythonic way if you need xml, but I've only used it in small protos. I'm curious if anyone has used "amara" in bigger projects? (Not saying specifically this project, for anything.) http://www.xml3k.org/Amara/QuickRef [ link to amara1.0 quickref, since 2.0 if curious: random snippit, using ETree vs amara. http://stackoverflow.com/questions/1926512/editing-the-xml-attributes-from-a-xml-file-using-python/1934375#1934375 Here's something I whipped up. Loads window containing list of buttons. # testing amara for xml # see also: eclipse://jakeref/xml-amara.py def test(): # quick example for UI interface xml_ui = """ <window type="dialog.ok cancel" text="ok?"> <button type="ok" text="save" selected="true"> <loc x="100" y="240" w="40" h="10" /> </button> <button type="cancel" text="cancel"> <loc x="300" y="240" w="40" h="10" /> </button> </window>""" import amara from amara import bindery import pygame from pygame.locals import Rect class Window(): def __str__(self): return "Window<type='%s', text='%s'>" % (self.type, self.text) class Button(): def __str__(self): return "\tButton<type='%s', text='%s', rect='%s'>" % (self.type, self.text, self.rect) doc = bindery.parse(xml_ui) win = Window() win.widgets = [] win.text, win.type = doc.window.text, doc.window.type for cur in doc.window.button: b = Button() b.rect = pygame.Rect( int(cur.loc.x), int(cur.loc.y), int(cur.loc.w), int(cur.loc.h)) b.type = cur.type b.text = cur.text win.widgets.append(b) """output: Window<type='dialog.ok cancel', text='ok?'> Button<type='ok' text='save', rect='<rect(100, 240, 40, 10)>'> Button<type='cancel' text='cancel', rect='<rect(300, 240, 40, 10)>'> """ print win for cur in win.widgets: print cur -- Jake
