2024. 3. 8. 18:32ㆍGUI/tkinter
요약 : 이 튜토리얼에서는 Tkinter Progressbar 위젯에 대해 배우게 됩니다.
Tkinter Progressbar 위젯 소개
Progressbar 위젯을 사용하면 장기 실행 작업의 진행 상황에 대한 피드백을 사용자에게 제공할 수 있습니다. Progressbar 위젯을 생성하려면 다음 ttk.Progressbar클래스를 사용합니다.
ttk.Progressbar(container, **options)
다음은 Progressbar 위젯을 생성하기 위한 일반적인 매개변수를 보여줍니다.
ttk.Progressbar(container, orient, length, mode)
이 구문에서는:
- container는 진행률 표시줄의 상위 구성 요소입니다.
- orient는 'horizontal' 또는 'vertical' 일 수 있습니다.
- length는 가로 진행률 표시줄의 너비 또는 세로 진행률 표시줄의 높이를 나타냅니다.
- mode는 'determinate' 또는 'indeterminate' 일 수 있습니다.
불확정 모드
indeterminate 모드에서는 진행률 표시줄에 위젯 끝 사이를 앞뒤로 움직이는 표시기가 표시됩니다.
일반적으로, 장기 실행 작업을 완료하는 데 걸리는 시간을 정확하게 측정하는 방법을 모를 때 indeterminate 모드를 사용합니다.
확정 모드
determinate 모드에서는 진행률 표시줄에 위젯의 처음부터 끝까지 표시기가 표시됩니다.
상대적인 진행 상황을 측정하는 방법을 알고 있다면 determinate 모드를 사용할 수 있습니다.
진행률 표시줄의 중요한 메서드
Progressbar에는 다음과 같은 중요한 메서드가 있습니다.
- start([interval])– interval 밀리초마다 표시기를 움직이기 시작합니다. interval 기본값은 50ms입니다.
- step([delta])– 지표 값을 델타만큼 늘립니다. delta 기본값은 1 밀리초입니다.
- stop()– 진행 표시줄의 표시 이동을 중지합니다.
Tkinter Progressbar 예제
진행률 표시줄 위젯을 만드는 몇 가지 예를 살펴보겠습니다.
indeterminate1) 모드 예제 의 Tkinter Progressbar
다음 프로그램은 indeterminate 모드에서 진행률 표시줄을 만드는 방법을 보여줍니다. start 버튼 을 클릭하면 진행률 표시줄이 표시기를 움직이기 시작합니다. stop 버튼을 클릭하면 진행률 표시줄의 진행률 표시기 이동이 중지됩니다.
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry('300x120')
root.title('Progressbar Demo')
root.grid()
# progressbar
pb = ttk.Progressbar(
root,
orient='horizontal',
mode='indeterminate',
length=280
)
# place the progressbar
pb.grid(column=0, row=0, columnspan=2, padx=10, pady=20)
# start button
start_button = ttk.Button(
root,
text='Start',
command=pb.start
)
start_button.grid(column=0, row=1, padx=10, pady=10, sticky=tk.E)
# stop button
stop_button = ttk.Button(
root,
text='Stop',
command=pb.stop
)
stop_button.grid(column=1, row=1, padx=10, pady=10, sticky=tk.W)
root.mainloop()

동작 방식.
먼저 길이가 280픽셀이고 'indeterminate' 모드가 다음과 같은 수평 진행률 표시줄을 만듭니다.
pb = ttk.Progressbar(
root,
orient='horizontal',
mode='indeterminate',
length=280
)
둘째, start 버튼 명령에 Progressbar.start 메서드를 전달합니다.
start_button = ttk.Button(
root,
text='Start',
command=pb.start
)
셋째, stop 버튼 명령에 Progressbar.stop 메서드를 전달합니다.
stop_button = ttk.Button(
root,
text='Stop',
command=pb.stop
)
2) determinate 모드 예제 의 Tkinter Progressbar
다음 프로그램은 determinate 모드에서 진행률 표시줄을 사용하는 방법을 보여줍니다.

동작 방식.
먼저 determinate 모드에서 진행률 표시줄을 만듭니다.
pb = ttk.Progressbar(
root,
orient='horizontal',
mode='determinate',
length=280
)
둘째, progress 버튼의 클릭 이벤트에 progress() 함수를 바인딩합니다. 버튼을 클릭하면 진행률 표시줄의 값이 20% 증가하고 진행률 레이블이 업데이트됩니다. 또한 프로그램은 값이 100에 도달하면 진행이 완료되었음을 나타내는 메시지 상자를 표시합니다.
def progress():
if pb['value'] < 100:
pb['value'] += 20
value_label['text'] = update_progress_label()
else:
showinfo(message='The progress completed!')
셋째, stop() 버튼의 클릭 이벤트에 stop 함수를 바인딩합니다. 또한 stop() 함수는 진행률 레이블을 업데이트합니다.
def stop():
pb.stop()
value_label['text'] = update_progress_label()
요약
- 진행률 표시줄을 만들려면 ttk.Progressbar(container, orient, length, mode)를 사용하세요 .
- 프로그램이 표시할 상대적인 진행 상황을 정확하게 알 수 없는 경우 indeterminate 모드를 사용하십시오 .
- 진행 상황을 정확하게 측정하는 방법을 알고 있다면 determinate 모드를 사용하세요 .
- start(), step() 및 stop() 메서드를 사용하여 진행률 표시줄의 현재 값을 제어합니다.
'GUI > tkinter' 카테고리의 다른 글
Tkinter Treeview (0) | 2024.03.10 |
---|---|
Tkinter Notebook (0) | 2024.03.09 |
Tkinter LabelFrame (0) | 2024.03.07 |
Tkinter Sizegrip (0) | 2024.03.06 |
Tkinter Spinbox (0) | 2024.03.05 |