Проблема в том, как вы строите список
btns=[[None]*5]*5
, таким образом, вы создаете список и повторяете его ссылку 5 раз. Поскольку это происходит каждый раз при добавлении кнопки в список строк, такие же изменения влияют на другие списки строк.
EX
btns = [[None]*5]*5
btns[0][0] = 'a'
btns ---> [
['a', None, None, None, None],
['a', None, None, None, None],
['a', None, None, None, None],
['a', None, None, None, None],
['a', None, None, None, None]
]
Это правильное способ построения списка
btns = [[None for i in range(rows)] for j in range(columns)]