This is a way of working with GUIs that provide access to complex data, and it seems to scale really quite well indeed. You do it by separating the code to implement the '''Model''' (your underlying data is, say, an updatable list or a read-only tree) from the '''View''' (how your data looks when drawn on the screen) and the '''Controller''' (how your model responds to updates to the view) though often the view and controller are joined together. Some features of [Tk] operate in this way; notably the -variable option to [entry], the -textvariable option to [label], [button] ''et al'', and the -listvariable option to [listbox]. It's wise to design the rest of your interface that way as well. The [trace] command (particularly [[trace variable]]) is very useful for implementing triggers that update a view when the underlying model changes. The [bindtags] command is useful for associating a widget with one or more controllers other than the standard ones that Tk provides. For a simple example, see the page entitled, "[Text variable for text widget]". ---- [Category Concept] | [Category GUI]