Default grid behavior is this, and most likely what you're experiencing, empty cells collapse to 0 width & height. Empty cells collapsing also affects empty rows & columns potentially resulting in rows & columns of 0 width and height. while not desirable in some/many cases empty cells collapsing, directly related to occupying required space facilitating their hosted controls dimensions exclusively, is predictable (consistent) and expected as the lack of content in a cell essentially leaves that cell in an uninitialized-like state.
While columns and rows may be set with weighted characteristics the ability to determine or set a static width and height explicitly is non-existent from what I've found, so far, researching Tkinter and TK both.
A work-around concerning spacing is similar to what is often used in web-grid-layouts utilizing tables long ago requiring shims generally being a transparent image. I'm not a fan of work-arounds myself feeling that they generally disrupt system flow & development intellectually and obscure oversight & laziness if not simply explicit disregard/refusal to advance the underlying system.
I do think Tkinter to be interesting and an excellent, portable solution, but with limitations while being minor have far reaching impact on adoption & built-in functionality. I find that understanding the TK/Tkinter system fundamental, but am looking into Kivy myself. wxPython, mentioned previously by Larz60+, is seasoned, robust and comes with phenomenal back-end support for just about anything imaginable (more like an OS dev kit than GUI library).
Take care and best wishes on finding resolution.