Python

[Python] 파이썬 TKinter 모듈로 GUI 만들기

Let it out 2024. 3. 3. 00:25

GUI(Graphical User Interface)

GUI는 사용자와 컴퓨터 간의 상호작용을 위해, 그래픽으로 제공하는 인터페이스를 뜻한다.

 

GUI는 창, 버튼, 텍스트 상자, 메뉴, 아이콘 등 그래픽 요소를 통해 사용자에게 정보를 시각적으로 전달하고,

 

사용자는 마우스, 키보드 등을 통해 프로그램에게 입력 값을 준다.

 

우리가 모니터 상에서 보는 모든 요소가 GUI다.

 


Tkinter

Tkinter는 Python에서 GUI를 개발하기 위한 표준 라이브러리다.

 

더 정확하게는 Tk라는 Tcl/Tk 프로그래밍 언어를 기반으로 한 GUI 툴킷이 있고,

 

Tkinter는 Tk GUI 툴킷의 Python 인터페이스다.

 

즉, Tk를 사용하기 위해서 Tkinter 라이브러리를 사용한다.

 

Tkinter 를 사용하면 버튼, 레이블 등 다양한 GUI요소를 사용해 응용 프로그램을 만들 수 있다.

 


 

Tkinter import

Tkinter는 사실상 파이썬의 표준 GUI 라이브러리로 사용되어 파이썬에 내장되어있다.

 

따라서 따로 모듈을 설치 할 필요없이 import만 해주면된다.

import tkinter as tk

 


 

윈도우 생성

가장 기본적인 윈도우 창 생성 방법이다.

 

주의 할점window.mainloop() 는 윈도우 생성시 이벤트 루프가 계속 돌아가며,

 

사용자의 입력 등 이벤트가 발생하면 콜백함수가 실행되어 응답을 처리한다.

 

따라서 windw.mainloop() 메서드가 없으면 윈도우 창은 열리지만 아무런 동작을 하지 않는다.

import tkinter as tk

#윈도우 생성
window = tk.Tk()
window.title('Example') #최상단 타이틀 이름
window.geometry('500x500+220+200') #윈도우 창 화면 크기

#이벤트 루프
window.mainloop()

 

 


 

label 추가

레이블(라벨)은 화면에 문자를 적어준다.

 

pack() 함수는 부모 컨테이너를 기준으로 레이아웃을 배치한다.

 

만약 다른 방법으로 레이아웃을 배치 하고 싶다면 grid() 와 place() 이 두가지 키워드로 검색 해보면 된다.

# 레이블 추가
label = tk.Label(window, text="이름 : ")
label.pack(side="left", anchor="nw") #레이아웃 배치

 


 

entry 추가

엔트리는 사용자로 부터 입력을 받기 위한 요소다.

# 엔트리 추가
entry = tk.Entry(window)
entry.pack(side="left", anchor="nw")

 

 


 

button 추가

command 요소를 사용해 버튼 클릭시 호출 할 함수를 지정할 수 있다.

 

버튼 클릭 시 config 메서드를 사용해 label의 문자를 바꾸는 예제다.

# 버튼 추가
def on_button_click():
    label.config(text="Hello, " + entry.get())

# 버튼 클릭시 on_button_click 함수 실행
button = tk.Button(window, text="report", command=on_button_click)
button.pack()

 


 

전체 코드

지금까지 작성한 전체 코드다.

import tkinter as tk

#윈도우 생성
window = tk.Tk()
window.title('Example') #최상단 타이틀 이름
window.geometry('500x500+220+200') #윈도우 창 화면 크기

# 레이블 추가
label = tk.Label(window, text="이름 : ")
label.pack(side="left", anchor="nw") #레이아웃 배치

# 엔트리 추가
entry = tk.Entry(window)
entry.pack(side="left", anchor="nw")

# 버튼 추가
def on_button_click():
    label.config(text="Hello, " + entry.get())

# 버튼 클릭시 on_button_click 함수 실행
button = tk.Button(window, text="report", command=on_button_click)
button.pack()

#이벤트 루프
window.mainloop()

 

 


마치며

지금까지 가장 기본적인 Tkinter 사용법을 알아봤다.

 

본문 내용보다 많은 기능이 있으니 찾아 보길 바란다.

 

파이썬은 다른 언어에 비해서 UI 만드는 것이 정말 쉬운편이라서 금방 공부 할거다.

 

따라서 Tkinter 뿐만 아니라 PyQt 같은 다른 UI 만드는 방법도 공부하는 것을 추천한다.

 

반응형