Проблема не в ваших командах, а в том, как вы создаете свои списки.
Когда вы умножаете список, вы фактически умножаете ссылку на этот единственный список (см. этот вопрос ).Это можно увидеть, выполнив следующий код:
text = [[None]*3]*3
print([id(x) for x in text])
Таким образом, при изменении элемента в одном из списков элемент изменяется во всех списках.Поэтому ваш список выглядит не как [[1,2,3],[4,5,6],[7,8,9]]
, а как [[7,8,9],[7,8,9],[7,8,9]]
.Затем, когда вы думаете, что устанавливаете StringVar номер 1, вы фактически устанавливаете Stringvar номер 7, так что кнопка номер 7 изменяется.
Вы можете создать три отдельных списка, используя списки вместо умножения.Как видно из следующего кода, это создает три отдельных списка.
text = [[None]*3 for _ in range(3)]
print([id(x) for x in text])