파이썬(Python)

[ Tkinter ] 파이썬 진행상태바 만들기, 프로그래스바와 레이블을 활용한 GUI 진행 상황 표시

카루루1007 2024. 1. 8. 15:00
728x90
반응형
SMALL

[ 들어가며 ]

 

어떤 프로그램이 설치 또는 실행될때

진행상태를 나타내주는 막대

많이 보셨을 겁니다.

 

진행상태바가 없으면

얼마나 기다려야할 지, 제대로 동작은 하고 있는 지

사용자 입장에서는 답답한 부분이

생기게 됩니다.

 

오늘은 파이썬 tkinter를 사용하여

간단하게 진행상태바를 구현하는 방법을 알아보겠습니다.

 

[ 필요한 모듈 가지고 오기 ]

 

우선 코드의 첫 부분에서는 필요한 tkinter 모듈과 time 모듈을 가져오고 있습니다.

import tkinter as tk
import tkinter.ttk
import time

 

tkinter는 Python에서 GUI를 개발할 때

가장 많이 사용되는 모듈 중 하나이며,

728x90

tkinter.ttk는 테마 지원이 추가된

tkinter의 서브 모듈입니다.

 

time 모듈은 코드 실행을 지연시키기 위해 사용됩니다.

 

[ 기본 설정 및 창 생성 ]

root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")

 

위 코드는 tkinter를 사용하여

기본적인 창을 생성하는 부분입니다.

Tk() 함수로 기본 창을 생성하고,

title 메서드로 창의 제목을 설정하고,

geometry 메서드로 창의 크기를 지정하고 있습니다.

 

[ 프로그레스 바 및 레이블 생성 ]

rate = tkinter.IntVar()
bar = tkinter.ttk.Progressbar(root, variable=rate, length=250)
bar.pack()

label = tkinter.Label(root)
label.pack()

 

여기서는 tkinter의 IntVar 클래스를 사용하여

정수 값을 저장하는 변수 rate를 생성하고,

이를 이용하여 프로그레스 바와

레이블을 생성하고 있습니다.

 

Progressbar 클래스는 프로그레스 바를 생성하며,

variable 매개변수에는 rate 변수를 연결하고,

length 매개변수로는 프로그레스 바의 길이를 설정하고 있습니다.

 

Label 클래스는 레이블을 생성하는데 사용되고,

pack 메서드로 화면에 표시하고 있습니다.

 

[ 진행 상황 표시 및 업데이트 ] 

 

for i in range(100):
    rate.set(i+1)
    label.config(text=f"Progress {i+1}%")
    root.update()
    time.sleep(0.1)
반응형

이 부분은 진행 상황을 표시하고

업데이트하는 부분입니다.

 

range(100)을 통해 0부터 99까지의 숫자를 반복하며,

각각의 순간에 프로그레스 바와 레이블을 업데이트하고

화면을 갱신합니다.

 

rate.set(i+1)을 통해 rate 변수에 값을 할당하고,

label.config를 사용하여 레이블의 텍스트를 업데이트합니다.

 

root.update()는 화면을 업데이트하는 역할을 수행하며,

time.sleep(0.1)은 0.1초의 딜레이를 추가합니다.



[ 실 행 ]

 

root.mainloop()

 

마지막으로 mainloop 메서드를 호출하여 창을 실행합니다.

 

[ 전체코드 ]

 

import tkinter as tk
import tkinter.ttk
import time

root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")

rate = tkinter.IntVar()
bar = tkinter.ttk.Progressbar(root, variable=rate, length=250)
bar.pack()

label = tkinter.Label(root)
label.pack()

for i in range(100):
    rate.set(i+1)
    label.config(text=f"진행률 {i+1}%")
    root.update()
    time.sleep(0.1)
    
root.mainloop()


이 코드를 실행하면 창이 생성되고, 

프로그레스 바와 레이블이 0%부터 99%까지 

0.1초 간격으로 업데이트되며 

진행 상황을 시각적으로 확인할 수 있습니다. 

 

이 예시를 통해 tkinter를 사용하여 간단한 GUI를 만들고, 

어떻게 프로그레스 바를 활용하여 

작업의 진행 상태를 표시하는지 알아보았습니다.

728x90
반응형
LIST