본문 바로가기
programming/Python

파이썬 tkinter grid 위젯 배치하기 Layout python grid

by 개코 - 개발과 코딩 2022. 1. 3.

파이썬 gui 에서 레이아웃을 지정할 때 grid 를 사용하면 편하다. 위젯의 화면배치가 용이하고 위젯의 위치는 행과 열의 위치만 설정하면 그만이다. 공간이 부족하면 행과 열을 서로 합치기 함으로써 공간을 늘릴 수도 있다. 레이아웃이 복잡해 질 때마다 코드 길이가 길어지는 것은 감수해야 하는 문제가 따른다.

파이썬 tkinter grid 위젯 배치하기
Layout python grid

파이썬 gui 에서 화면배치를 할 때 grid 를 사용하면 편하다.

grid 는 바둑판 또는 엑셀의 셀들을 생각하면 된다.

행과 열을 이용해 위젯들을 배치하고 화면을 구성할 수 있다.

그리고, 행과 열을 합치기하여 보기 편한 레이아웃을 구성할 수 있다.

grid 레이아웃

사용법은 pack 메서드와 비슷하지만 인자값에 행과 열이 들어간다.

행을 지정하는 인자값은 row

열을 지정하는 인자값은 column 이다.

위젯을 추가할 때마다 행과 열을 지정하면서 grid 레이아웃에 추가할 수 있다.

Widget = Widget(Window)
Widget.grid(row=행번호, column=열번호 [, rowspan=합치기 행갯수, columnspan=합치기 열갯수] )

샘플코드

3 X 3 으로 grid 레이아웃을 구성해 본다.

grid 레이아웃을 사용할 때는 보통 3 x 3 으로 구성한다.

라벨을 9개 만들고 grid 에 하나씩 붙여보기로 한다.

#----- import 모듈
import tkinter.messagebox as msgbox
from tkinter import *
from datetime import datetime

#----- 함수
    
#----- 메인

# 윈도우 창 생성
vWindow = Tk()
vWindow.title('윈도우창 타이틀')
vWindow.geometry('640x320')
vWindow.option_add('*Font', '돋음 20')

vLabel1 = Label(vWindow)
vLabel1.config(text='[ 0 , 0 ]')
vLabel1.grid(row=0, column=0)

vLabel2 = Label(vWindow)
vLabel2.config(text='[ 0 , 1 ]')
vLabel2.grid(row=0, column=1)

vLabel3 = Label(vWindow)
vLabel3.config(text='[ 0 , 2 ]')
vLabel3.grid(row=0, column=2)

vLabel4 = Label(vWindow)
vLabel4.config(text='[ 1 , 0 ]')
vLabel4.grid(row=1, column=0)

vLabel5 = Label(vWindow)
vLabel5.config(text='[ 1 , 1 ]')
vLabel5.grid(row=1, column=1)

vLabel6 = Label(vWindow)
vLabel6.config(text='[ 1 , 2 ]')
vLabel6.grid(row=1, column=2)

vLabel7 = Label(vWindow)
vLabel7.config(text='[ 2 , 0 ]')
vLabel7.grid(row=2, column=0)

vLabel8 = Label(vWindow)
vLabel8.config(text='[ 2 , 1 ]')
vLabel8.grid(row=2, column=1)

vLabel9 = Label(vWindow)
vLabel9.config(text='[ 2 , 2 ]')
vLabel9.grid(row=2, column=2)

# 윈도우 창 실행
vWindow.mainloop()

#----------

노가다가 따로 없다.

주목할 곳은 grid 부분이다.

나머지는 라벨 위젯이나 버튼 위젯을 사용하는 방법과 같다.

결과화면을 보자.

예쁘진 않지만 3 X 3 grid 레이아웃이 보인다.

반응형

댓글