""" >>> root = Tk() >>> maintext = Text(root, {'name': 'maintext'}) >>> peertext = Peer(maintext, root, {'name': 'peertext'}) >>> maintext.insert('1.0', 'Peers are Texts') >>> peertext.insert('end', ' too, you know!') >>> maintext.pack() >>> peertext.pack() >>> peertext.config({'background': 'grey'}) >>> peertext.dump('1.0', 'end') == maintext.dump('1.0', 'end') True >>> root.destroy() """ from tkinter import * class PeerBase(Misc): def __init__(self, master, widgetName, cnf={}, kw={}, extra=()): """Construct a peer widget.""" self.target = cnf['name'] # change : added target if kw: cnf = _cnfmerge((cnf, kw)) self.widgetName = widgetName BaseWidget._setup(self, master, cnf) if self._tclCommands is None: self._tclCommands = [] classes = [(k, v) for k, v in cnf.items() if isinstance(k, type)] for k, v in classes: del cnf[k] self.tk.call( # change : modify the actual tk command (widgetName, 'peer', 'create', self._w) + extra + self._options(cnf)) for k, v in classes: k.configure(self, v) class PeerW(PeerBase, Pack, Place, Grid): """ Not sure we need this... """ pass class Peer(Text): def __init__(self, widgetName, master=None, cnf={}, **kw): PeerW.__init__(self, master, widgetName, cnf, kw) if __name__ == '__main__': import doctest doctest.testmod()