Я хотел бы расположить такие кнопки с помощью tkinter: 
Это работает со следующим кодом:
from tkinter import *
root = Tk()
root.title("Tic Tac Toe")
btn = []
def btnClicked (btnNum):
print(btnNum)
b=0
for a in range(9):
if(a%3 == False):
b = b+1
btn.append(Button(root, text="", command = lambda c=a: btnClicked(c), height = 10, width = 20).grid(row = a-3*(b-1), column=b))
root.mainloop()
Однако для выполнениядействие над этими кнопками, мне нужно упаковать их, например:
from tkinter import *
root = Tk()
root.title("Tic Tac Toe")
btn = []
def btnClicked (btnNum):
print(btnNum)
btn[btnNum]["text"] = "X"
b=0
for a in range(9):
if(a%3 == False):
b = b+1
btn.append(Button(root, text="", command = lambda c=a: btnClicked(c), height = 10, width = 20).grid(row = a-3*(b-1), column=b))
btn[a].pack()
root.mainloop()
Когда я запускаю этот код, я получаю следующую ошибку:
AttributeError: объект 'NoneType'не имеет атрибута 'pack'
Пока этот код работает, как мне хотелось бы, когда я не размещаю кнопки в сетке, например:
from tkinter import *
root = Tk()
root.title("Tic Tac Toe")
btn = []
def btnClicked (btnNum):
print(btnNum)
btn[btnNum]["text"] = "X"
b=0
for a in range(9):
if(a%3 == False):
b = b+1
btn.append(Button(root, text="", command = lambda c=a: btnClicked(c), height = 10, width = 20))
btn[a].pack()
root.mainloop()
Как можноЯ избавляюсь от ошибки во втором примере кода или выравниваю кнопки в сетке в третьем примере соответственно?