본문 바로가기

Python(파이썬)/GUI(graphical user interface)

파이썬 GUI - 프로그레스(로딩바) 만들기

파이썬 GUI 티킨더(tkinter) 사용 방법을 모른다면?

파이썬 GUI - 기본틀 만들기

 

로딩바 만들기

막대기에 초록색 등의 색깔이 점점 채워져서 막대기를

꽉 채우는 장면을 본 적이 있을 겁니다 

로딩바 혹은 프로그레스바(progressbar)라고 불리는 것을 만들겠습니다

만들기 전에 ttk를 import 해야 프로그레스바(progressbar) 사용이 가능합니다

ttk를 import 했으니 ttk의 Progressbar 함수를 호출합니다

progressbar = ttk.Progressbar(root)

progressbar.pack()

실행을 합니다

프로그레스바가 생겼지만 아무 일도 일어나지 않습니다

start() 함수를 사용해야 프로그레스바가 자동으로 실행됩니다

start(숫자) 형식으로 숫자가 0에 가까울수록 빠르게 차고

반대로 숫자가 낮을수록 느리게 차게 됩니다

progressbar.start(10)을 입력합니다

프로그레스바가 꽉 차도 멈추지 않고 다시 처음부터 시작됩니다

start를 사용해서 프로그레스바를 시작했습니다

stop을 사용하면 프로그레스바를 멈출 수 있습니다

버튼(button)을 만들어서 버튼을 누르면 프로그레스바가 멈추게 하겠습니다

btncmd() 함수를 만들고 함수 안에 progressbar.stop()를 만들었습니다

"중지"버튼을 클릭하면 btncmd() 함수가 실행되고 그 안의 progressbar.stop() 실행됩니다

"중지" 버튼 클릭하면 프로그레스바가 바로 멈춥니다

 

프로그레스바(로딩바) 모드 변경

Progressbar() 함수에 옵션을 줘서 모드(mode) 변경을 할 수 있습니다

ttk.Progressbar(root)를 기본으로 사용했습니다 이렇게 쓰면 mode='determinate' 생략되어 있습니다

progressbar = ttk.Progressbar(root, mode='determinate')와 같습니다

mode='indeterminate'로 변경하면 아래와 같이 프로그레스바가 변경됩니다

mode의 종류

1. determinate

2. indeterminate

 

프로그레스바 크기 지정

Progressbar() 함수에 옵션을 줘서 맥시멈(maximum) 변경을 할 수 있습니다

맥시멈(maximum)은 프로그레스바 크기입니다

똑같은 조건을 가지고 맥시멈(maximum)의 크기를 다르게 할 경우 프로그레스바가 눈에 띄는 차이를 보입니다

프로그레스바 길이 지정

맥시멈(maximum) 크기를 늘려도 프로그레스바의 길이는 변하지 않습니다

프로그레스바의 길이를 늘리고 싶을 때 사용하는 방법입니다

 

length 옵션을 주면 프로그레스바의 길이가 변합니다

위와 같이 프로그레스바의 길이가 변합니다

 

추가

현재는 프로그레스바는 실행하면 시작하고 중지를 하지 않고 중지하는 기능을 가진

버튼을 클릭해야 프로그레스바가 끝났습니다

반대로 우리가 시작 버튼을 클릭해야 시작하고 프로그레스바가 꽉 차면 중지되게 해 보겠습니다

DoubleVar() 함수는 소수점의 숫자 사용할 수 있습니다

variable에 p_var=DoubleVar()을 넣습니다

maximum은 100을 줘서 DoubleVar도 100에 맞추겠습니다

btncmd2 함수의 for문은 1~100까지 숫자를 만들고 time.sleep(0.01)을 통해서 숫자가 하나씩 올라갈 때마다

0.01초씩 멈추게 합니다

1씩 올라가는 숫자를 set으로 다시 저장합니다

그리고 update로 저장된 값을 반영합니다

time.sleep을 하기 위해서는 import time을 해야 합니다

 

 

실행화면입니다

시작 버튼을 클릭 하면 프로그레스바가 실행됩니다

숫자도 100까지 올라갑니다

코드