1 tkinter
tkinter 는 파이썬 내장 모듈로 단순위젯(Lightweight GUI) 지원 모듈이다. 따라서 사용시 모듈을 import 후 사용해준다.
윈도우 창을 만들고 Button, Canvas, CheckBox 등을 추가해 줄 수 있다.
그리고 위젯들은 모두 클래스로 이루어져 있기 때문에 원하는 객체를 생성해서 사용해 줄 수 있다.
먼저 윈도우 창을 만들어보자. 윈도우 창은 Tk() 로 만들어 줄 수 있다.
2 Tk() 위젯으로 윈도우 창 생성
1
2
3
4
5
6
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.mainloop() # 맨 아래 작성
|
cs |
단순 import만 사용하게 되면 함수를 사용할 때 마다 모듈명을 붙여줘야 하기에 from tkinter import * 로 사용해줬다.
그리고 Tk()를 win 객체에 담아 윈도우 창을 생성해주었다.
윈도우 창을 생성해줬으면 마지막에 mainloop()를 작성해줘야 한다. mainloop()는 다양한 이벤트로부터 오는 설정을 전달하는 역할을 한다. 윈도우 창을 닫을 때 까지 윈도우를 실행시켜주는 메서드로 꼭 작성해주는 습관을 들이도록하자.
실행시키면 다음과 같이 윈도우 창이 생성된다.
윈도우 창을 만들어 줬으니 창크기와 생성 위치를 설정해주는 메서드도 알아보자. 창크기와 생성위치는 geometry()를 통해 설정해줄 수 있다. 다음과 같이 사용하면 된다.
geometry("너비x높이+x좌표+y좌표")
위 코드에 geometry() 추가 후 실행시켜주면 다음과 같이 창의 크기가 설정된다.
1
2
3
4
5
6
7
8
9
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
# 너비가 300 높이가 300 인 윈도우 창을
# 화면 왼쪽상단을 기준, x축 100 y축 100만큼 떨어진 곳에 생성
win.mainloop() # 맨 아래 작성
|
cs |
그리고 창의 모서리에 마우스 커서를 올려서 창의 크기를 조절할 수도 있는데 이를 방지할 수 있는 메서드도 있다.
resizable() 메서드인데 이 값은 기본적으로 True로 적용되어있다. 이를 False로 바꿔주면 크기조절이 불가능하다.
resizwable(x축방향,y축방향)
# 각 값으로 True/False가 들어갈 수 있다.
1
2
3
4
5
6
7
8
9
10
11
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
# 너비가 300 높이가 300
# 화면 왼쪽상단을 기준, x축 100 y축 100만큼 떨어진 곳에 생성
win.resizable(True,False)
# x축방향으로는 조절이 가능하고 y으로는 불가능하다.
win.mainloop() # 맨 아래 작성
|
cs |
그리고 윈도우 창의 타이틀도 설정해줄 수 있다. title()메서드를 사용한다. 아래와 같이 코드 작성 후 실행시켜주면 다음과 같이 타이틀이 설정된다.
1
2
3
4
5
6
7
8
9
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
win.resizable(True,False)
win.title("제목없는 윈도우") # 윈도우 타이틀 설정
win.mainloop() # 맨 아래 작성
|
cs |
2 Label() 위젯
그럼 윈도우 창안에 글씨를 적어보자. Label 을 사용해 적어줄 수 있는데 이것은 클래스 형태로 존재한다. Label에는 설정해줄 수 있는 여러가지 설정값들이 존재한다.
라벨 형태 설정
따라서 위의 형태를 이용해 Label()을 사용해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
win.resizable(True,False)
win.title("제목없는 윈도우") # 윈도우 타이틀 설정
# 윈도우 창안에 뭔가 적어주는 메서드
label1 = Label(win,text="파이썬18", bg='red',fg='white') # 색상설정
label2 = Label(win,text="박스1", bg='green',fg='black') # 색상설정
label1.pack() # 화면배치 관리자 label의 위치를 지정줌. pack을 해주지 않으면 label이 뜨지 않음.
label2.pack()
win.mainloop() # 맨 아래 작성
|
cs |
위와 같이 Label은 객체(클래스)이기 때문에 label1이라고 하는 변수에 담아준다. 그리고 Label() 객체 안에 먼저 데이터를 넣어줄 객체(win)를 알려주고, text="" 형식으로 들어갈 내용을 작성해준다. 그리고 bg=""을 이용해 배경색을 설정, fg=""를 이용해 폰트 색상을 설정해주었다.
그리고 줄 13,14에 pack()은 화면 배치 관리자로 label을 화면에 배치해줄 수 있는데 pack을 해주지 않으면 윈도우 창에 label이 뜨지 않는다.
위 내용을 실행시키면 다음과 같다. 기본적으로 위치를 지정해주지 않으면 상단 가운데에 위치하게 된다.
글씨를 써줬으니 버튼을 넣어줄 수도 있을 것이다. 다음으로 버튼을 넣는 방법을 알아보자.
2 Button() 위젯
버튼을 넣어줄 수 있는 Button위젯은 Label과 마찬가지로 클래스 형태이다. 따라서 객체 안에 넣어서 사용해줘야 한다.
다음과 같이 사용해줄 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
btn1 = Button(win,text='첫번째버튼') # 버튼 생성
btn2 = Button(win,text='두번째버튼') # 버튼 생성
btn1.pack() # 화면배치
btn2.pack(side=RIGHT) # 화면배치
win.mainloop() # 맨 아래 작성
|
cs |
Button()도 마찬가지로 안에 버튼을 넣어줄 객체를 알려주고, text=""로 내용을 적는다. 그리고 pack을 이용해 화면에 배치시켜준다. 똑같이 기본값은 상단 가운데이지만 위치를 지정해줄 수 있다.
btn1은 기본값, btn2는 RIGHT로 지정해 주었다.
pack() 은 윈도우 자체 크기로 압축해서 자동 지정한다. 특별한 지정 없으면 top에 지정되고 side = LEFT, RIGHT, TOP, BOTTOM 으로 위치 지정이 가능하다.
pack(side=LEFT, RIGHT, TOP, BOTTOM)
그리고 좌표의 위치값을 지정해 위젯을 표시하는 place() 도 있다. 이것은 안에 값으로 x좌표와 y좌표의 값을 넣어서 설정한다. 왼쪽 상단으로 부터 가로 x, 세로y 만큼떨어진 곳에 위치하게 된다.
place(x=값1,y=값2)
1
2
3
4
5
6
7
8
9
10
11
12
|
from tkinter import *
win = Tk() # 윈도우창을 생성
win.geometry("300x300+100+100")
btn1 = Button(win,text='첫번째버튼') # 버튼 생성
btn2 = Button(win,text='두번째버튼') # 버튼 생성
btn1.place(x=0,y=0)
btn2.place(x=50,y=100)
win.mainloop() # 맨 아래 작성
|
cs |
댓글