본문 바로가기
Python/tkinter

[Python tkinter] tkinter 모듈을 이용한 GUI - 글 입력 위젯 Entry 와 , grid()

by dev수니 2021. 4. 7.
반응형

 

 

 

 

오늘은 글 입력 위젯인 Entry 이용하여 id, pw 를 입력받는 창을 간단히 만들고, grid() 형식으로 위젯을 배치하는 방법에 대해 알아볼 것이다.

 

 


 

 1  Entry 위젯

 

Entry위젯이기 때문에 클래스 타입이다. 따라서 객체를 생성해서 사용해줘야 하며 사용자로부터 텍스트(문자열)를 입력받아올 수 있다. 다음과 같이 사용하면된다.

 

from tkinter import *
win = Tk()

e1 = Entry(win)

win.mainloop()

 

Entry() 안에 Entry를 넣어줄 창의 객체(여기선 win)를 넣어주면 된다.

 

다음 id와 pw를 입력받는 예제이다. 먼저 다음과 같이 Entry객체로 문자열을 입력받는 위젯을 생성해주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from tkinter import *
 
win = Tk()     # 윈도우창을 생성
 
win.title("로그인창"# 윈도우 타이틀
win.geometry("300x300+100+100")
 
e1 = Entry(win)    # 문자열 입력위젯
e2 = Entry(win)
 
e1.pack()    # 위젯을 창에 배치
e2.pack()
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행된다.
cs

 

 

그리고 Label를 이용해 id와 pw를 구분해 주었다. 이번에는 Label 를 따로 객체에 담아주지 않고 생성과 동시에 배치시켜주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from tkinter import *
 
win = Tk()     # 윈도우창을 생성
 
win.title("로그인창"# 윈도우 타이틀
win.geometry("300x300+100+100")
 
Label(win,text="ID:").pack()
Label(win,text="PW:").pack()
 
e1 = Entry(win)    # 문자열 입력위젯
e2 = Entry(win)
 
e1.pack()    # 위젯을 창에 배치
e2.pack()
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행된다.
cs

 

 

위의 배치의 순서를 id와 첫번째 입력창행1에, pw와 두번째 입력창행2에 하려면 어떻게 해야할까?

이때 필요한 화면배치 방법이 있는데 바로 grid() 이다.

 

 

grid(row=값1 , column=값2)

 

위젯을 표형식으로 행과 열을 이용해 위치시킨다. 값은 0부터 시작이며 다음과 같이 지정해줄 수 있다.

 

row=0, column=0 row=0, column=1 row=0, column=2
row=1, column=0 row=1, column=1 row=1, column=2

이런식으로 지정해줄 수 있다.

 

 

 

따라서 위의 pack()대신 grid()를 사용하여 다음과 같이 배치시켜준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from tkinter import *
 
win = Tk()     # 윈도우창을 생성
 
win.title("로그인창"# 윈도우 타이틀
win.geometry("300x300+100+100")
 
Label(win,text="ID:").grid(row=0# 행이기때문에 순서대로 작성
Label(win,text="PW:").grid(row=1)
 
e1 = Entry(win)
e2 = Entry(win)
 
e1.grid(row=0,column=1)
e2.grid(row=1,column=1)
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행된다.
 
cs

 

Label의 column 값은 어짜피 Entry보다 코드상 앞에 위치해 있기 때문에 0이므로 생략해줘도 된다.

 

 

 

그리고 로그인 버튼을 추가하였다. 여기서 Button의 크기와 위치를 따로 지정해줬다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from tkinter import *
 
win = Tk()     # 윈도우창을 생성
 
win.title("로그인창"# 윈도우 타이틀
win.geometry("300x300+100+100")
 
Label(win,text="ID:").grid(row=0# 행이기때문에 순서대로 작성
Label(win,text="PW:").grid(row=1)
 
e1 = Entry(win)
e2 = Entry(win)
 
e1.grid(row=0,column=1)
e2.grid(row=1,column=1)
 
Button(win,text="Login",height=2).grid(row=0,column=2,rowspan=2)
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행된다.
 
cs

 

 

 

Button의 높이를 2로 지정해주었고(기본 1) grid로 테이블 위치로 지정해주었는데 첫번째 행의 세번째 열에 들어가야 하므로 위와같이 지정해주었고 rowspan=2로 지정해주었다. 여기서 rowspan이 무엇인지에 대해 알아보자.

 

 

grid에 지정해줄수 있는 설정값으로 rowspancolspan이 있다. 이것을 테이블 상에서 칸을 합친다라는 의미로 rowspan행(세로)로 칸을 합쳐주고 colspan열(가로)로 칸을 합쳐준다.

 

 

아래의 표를 보면 이해가 쉬울 것이다.

rowapan=2 colspan=2
   

 

 

 

 

 

 

 

반응형

댓글