오늘은 글 입력 위젯인 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에 지정해줄수 있는 설정값으로 rowspan과 colspan이 있다. 이것을 테이블 상에서 칸을 합친다라는 의미로 rowspan은 행(세로)로 칸을 합쳐주고 colspan은 열(가로)로 칸을 합쳐준다.
아래의 표를 보면 이해가 쉬울 것이다.
rowapan=2 | colspan=2 | |
댓글