본문 바로가기
GUI 튜토리얼/tkinter 한꼬집씩만 따라해보기

32. 진행표시줄(progressbar) 삽입하기

by 일코 2022. 11. 29.

이전 포스팅

2022.11.28 - [기타/tkinter 한꼬집씩만 따라해보기] - 31. 커스텀 테마 적용하기

 

31. 커스텀 테마 적용하기

이전 포스팅 2022.11.28 - [기타/tkinter 한꼬집씩만 따라해보기] - 30. 위젯에 툴팁 붙이기 30. 위젯에 툴팁 붙이기 이전 포스팅 2022.11.28 - [기타/tkinter 한꼬집씩만 따라해보기] - 29. 스핀박스 위젯 추가

martinii.fun


 

이번 포스팅에서는 : 진행표시줄(프로그레스바) 만들기

이번 포스팅에서는 프로그레스바를 만들고, 진행표시막대를 움직이게 만들어보겠습니다.

우리가 만들고자 하는 위젯은 다음과 같은 형태입니다.

 

버튼 하나와 프로그레스바 위젯 하나를 배치한 상태입니다.

코드를 한 번 보여드리겠습니다.

import tkinter as tk
from tkinter import ttk
from time import sleep


def 작업시작():
    for i in range(21):
        sleep(0.05)
        prog_bar["value"] = i
        prog_bar.update()


win = tk.Tk()

ttk.Button(win, text="작업시작", command=작업시작).grid(row=0, column=0, padx=10, pady=10)

prog_bar = ttk.Progressbar(win, length=300, maximum=20)
prog_bar.grid(row=1, column=0, padx=10, pady=10)

win.mainloop()

 

버튼에 command를 하나 붙여서 "작업시작" 함수를 실행하게 했습니다.

"작업시작" 함수는 프로그레스바의 value값을 0부터 20까지 변경시키면서

update 메서드를 통해 막대를 수시로 렌더링해주고(화면에 그려주고) 있습니다.

위에서는 굉장히 간단한 예제를 보여드렸습니다.

 

자, 그럼 작은 과제를 하나 드리겠습니다.

임의의 폴더 안에 (지워도 되는) 엑셀파일 100개를 담고,

100개의 엑셀파일을 삭제하는 프로그램을 만들어보세요.

삭제버튼을 누르면 작업진행 정도에 따라 프로그레스바가 채워져야 합니다.

아래는 간단한 예시답안입니다.

더보기
import os
import tkinter as tk
from tkinter import ttk
from time import sleep


def 작업시작():
    for i, j in enumerate(os.listdir(), start=1):
        sleep(0.05)
        os.remove(os.path.join(os.getcwd(), j))
        prog_bar["value"] = i
        prog_bar.update()


os.chdir(r"C:\Users\smj02\OneDrive\바탕 화면\새 폴더")
win = tk.Tk()

ttk.Button(win, text="작업시작", command=작업시작).grid(row=0, column=0, padx=10, pady=10)

prog_bar = ttk.Progressbar(win, length=300, maximum=len(os.listdir()))
prog_bar.grid(row=1, column=0, padx=10, pady=10)

win.mainloop()

 

댓글