Op 2016-02-11 om 00:30 schreef Bob Greschke:
I write stuff to a Text() and some words and lines are different colors or are links 
(binds) using Tags. I can Text().get(0.0, END), get all of the text, then insert that in 
another Text() to make a copy, but how do I get/transfer the other "formatting" 
info? The binds aren't real important, but the different colored text would be nice.


Not fully fleshed out, just an idea, I Text().dump() the selection and change the list so it can be reinserted easily. Currently not dealing with marks images etc.


logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
logger.addHandler(stream_handler)

def parse_dump(self, dump):
    """Parse the list, created by tkinter text dump()"""
    keystack = []
    output = []
    for section in dump:
        logger.debug("{0}".format(section))
        key, tag, index = section
        if key == 'tagon':
            keystack.insert(0, tag)
            logger.debug("Insert Tag: {}".format(tag))
        elif key == 'tagoff':
            try:
                keystack.pop(keystack.index(tag))
                logger.debug("Pop Tag: {}".format(tag))
            except ValueError as e:
                pass #!!!!
        elif key in ('window', 'image', 'mark'):
            pass
        else: #== 'text'
            output.append((tag, tuple(keystack)))
        logger.debug("KeyStack: {}".format(keystack))
    return output

def insert_dump(self, pdump):
    """Insert the parsed text dump at given position"""
    for line in pdump:
        logger.debug("{} |{}".format(line[0],line[1]))
        self.insert('end', line[0], line[1])

Ingo

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to