# def each_key(layout):
#    from itertools import accumulate
#    from operator import itemgetter
#
#    for row,xs in enumerate(layout):
#        column_indices = [0] + list(accumulate(map(itemgetter(1),xs)))
#        for column,(key,keylen) in zip(column_indices,xs):
#            yield row,column,key,keylen


def each_key(layout):
    for row,xs in enumerate(layout):
        column = 0
        for key,keylen in xs:
            yield row,column,key,keylen
            column += keylen

def main():
    ...

    for row,column,key,keylenin in each_key(layout):
        button = Button(root, text=key,command=press).grid(sticky="news", columnspan=keylen, row=row, column=column)
