On Thu, 20 Jan 2005 11:24:12 -0000, "Mark English" <[EMAIL PROTECTED]> wrote:



I'd like to write a Tkinter app which, given a class, pops up a
window(s) with fields for each "attribute" of that class. The user could
enter values for the attributes and on closing the window would be
returned an instance of the class. The actual application I'm interested
in writing would either have simple type attributes (int, string, etc.),
or attributes using types already defined in a c-extension, although I'd
prefer not to restrict the functionality to these requirements.


Hmm, I missed the original post, but I'll jump in anyway:

   This sounds a heck of a lot like a property-editing system.  When
   creating a property-modeled system, the best approach is normally to
   use something that actually models the properties, rather than
   trying to guess at the metadata involved by poking around in an
   arbitrarily structured object.

   My BasicProperty system allows for this kind of interaction
   (property-sheets) using wxPython (rather than Tkinter) when using
   wxoo.  You declare classes as having a set of data-properties (which
   can have defaults or not, constraints or not, restricted data-types
   or not, friendly names or not, documentation or not).  Normally you
   create these classes as subclasses of a class that knows how to
   automatically assign __init__ parameters to properties, and knows
   how to tell (e.g.) wxoo about the properties of the class.

   Those same property classes also allow for editing properties of
   database rows in PyTable, but that isn't likely relevant to your
   case.  We've also used them internally to create a rather large
   web-based property-editing mechanism (applied to such databases),
   but again, not really relevant to the case at hand.

Anyway, if you aren't interested in BasicProperty for this task; another project on which I work, PyDispatcher provides fairly robust mechanism (called robustApply) for providing a set of possible arguments and using inspect to pick out which names match the parameters for a function in order to pass them in to the function/method/callable object. That said, doing this for __init__'s with attribute values from an object's dictionary doesn't really seem like the proper way to approach the problem.

Good luck,
Mike

________________________________________________
 Mike C. Fletcher
 Designer, VR Plumber, Coder
 http://www.vrplumber.com
 http://blog.vrplumber.com

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to