공간이 의도한 대로 벌어지지 않습니다. label3은 그대로 (row=1, column=0) 위치에, label4는 (row=1, column=2)에 배치됐습니다.
이런 결과가 나오는 이유는 grid()의 특성 때문입니다. grid()는 row와 column에 숫자가 차례대로 나오지 않으면 직전에 나온 숫자의 바로 다음 숫자를 자동으로 설정합니다. 코드에서 row는 0까지 나왔기 때문에 (row=9, column=0)으로 설정해도 자동으로 row의 값을 9에서 1로 바꿔 위젯을 배치합니다. column은 그 전에 0이 등장한 적이 있으므로(label1) 지정한 위치 0에 배치하고요. label4.grid(row=9, column=9)도 마찬가지입니다. 이전에 row는 0까지 나타났으므로 1로, column은 1까지 나타났으므로 2로 변경해 화면에 배치합니다.
이번에는 위젯의 크기를 설정하고 grid()로 어떻게 표현되는지 살펴봅시다.
root = Tk()
root.title('my first tkinter')
root.geometry('400x200')
label1 = Label(root, text='안녕하세요!', width=20, height=5, relief='groove')
label1.grid(row=0, column=0)
label2 = Label(root, text='Hello!', width=10, height=5, relief='groove')
label2.grid(row=0, column=1)
label3 = Label(root, text='니하오!', width=10, height=5, relief='groove')
label3.grid(row=1, column=0)
label4 = Label(root, text='봉쥬르!', width=20, height=5, relief='groove')
label4.grid(row=1, column=1)
root.mainloop()
실행결과