I have a Tkinter window with a couple of widgets, they are all formatted with 
.grid(), but because one of the widget is a large canvas, the column is stretched out. When assigning a button to that coulmn, it stretches as wide as the widget which is not ideal, is there a way of putting more that one button in the same column?
Yes. Put a frame in the column, and put as many things as you want in the frame.
There are other solutions to the problem. For example, if you have 10 narrow buttons and one wide canvas, you can have the canvas span 10 columns rather than fill a single column.
Is a grid within a grid possible?