13 진행바(Progress)

Estimated reading: 2 minutes 14 views

이 문서에서는 AutoHotkey v2의 Progress 컨트롤 생성 및 제어에 대해 학습합니다. 초보부터 고급 사용자까지 다양한 수준의 예제를 통해 Progress 컨트롤 추가, 값 제어, 동적 제어, 이벤트 처리 등의 고급 기능을 다룹니다.

  • 초급: 기본 Progress 컨트롤 생성, 진행률 변경 및 크기 조정 방법을 학습합니다.
  • 중급: Progress의 스타일 변경, 색상 적용 및 동적 생성 기능을 학습합니다.
  • 고급: 파일 다운로드 진행률, 백그라운드 작업의 진행률 표시, 조건에 따른 Progress 상태 제어 등의 고급 기능을 학습합니다.

초급 (기본 사용법)

목표: 기본적인 Progress 컨트롤 생성 및 진행률 변경, 크기 조정 방법을 학습합니다.

기본 Progress 컨트롤 생성

기본 Progress 컨트롤을 생성하여 진행률을 표시합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyProgress.Value := 50
MyGui.Show(w300 h100)

설명

  • MyGui.Add(“Progress”, “w200 h20”): 너비 200px, 높이 20px의 Progress 컨트롤을 추가합니다.
  • MyProgress.Value := 50: 진행률을 50%로 설정합니다.

Progress의 크기 및 위치 조정

Progress 컨트롤의 위치와 크기를 설정합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, x20 y20 w150 h30)
MyProgress.Value := 70
MyGui.Show(w300 h150)

설명

  • x20 y20: X=20, Y=20 좌표에 Progress 컨트롤을 배치합니다.
  • w150 h30: 너비 150px, 높이 30px로 컨트롤 크기를 설정합니다.
  • MyProgress.Value := 70: 진행률을 70%로 설정합니다.

Progress의 기본 값 설정

Progress의 기본 값을 100%로 설정합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyProgress.Value := 100
MyGui.Show(w300 h100)

설명

  • MyProgress.Value := 100: 진행률을 100%로 설정하여 완료 상태를 나타냅니다.

중급 (Progress 컨트롤 스타일 설정)

목표: Progress의 스타일을 변경하고, 색상 적용, 동적 Progress 추가 기능을 학습합니다.

색상이 적용된 Progress 생성

진행률의 색상을 변경하여 사용자 정의 색상을 적용합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, cRed w200 h20)
MyProgress.Value := 60
MyGui.Show(w300 h100)

설명

  • cRed: 진행 바의 색상을 빨간색으로 설정합니다.
  • MyProgress.Value := 60: 진행률을 60%로 설정합니다.

동적 Progress 추가

버튼 클릭으로 동적 Progress 컨트롤을 추가합니다.

MyGui := Gui()
MyGui.Add(Button, gAddProgress, 진행률 추가)
MyGui.Show(w400 h400)

AddProgress() {
    Static ProgressCount := 1
    ProgressCount++
    MyGui.Add(Progress, x20 y (40 + ProgressCount * 30)  w200 h20)
    MyGui.Show()
}

설명

  • Static ProgressCount: 버튼 클릭할 때마다 Progress의 개수를 증가시킵니다.
  • MyGui.Add(“Progress”): 동적으로 새로운 Progress를 추가합니다.

진행률 동적 변경

버튼 클릭으로 진행률을 동적으로 변경합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyGui.Add(Button, gIncreaseProgress, 진행률 증가)
MyGui.Show(w300 h150)

IncreaseProgress() {
    MyProgress.Value += 10
    If (MyProgress.Value > 100) 
        MyProgress.Value := 0
}

설명

  • MyProgress.Value += 10: 진행률을 10%씩 증가시킵니다.
  • If (MyProgress.Value > 100): 진행률이 100%를 초과하면 다시 0%로 초기화합니다.

고급 (Progress 컨트롤 제어 및 이벤트 추가)

목표: Progress 컨트롤의 상태를 동적으로 제어하고, 파일 다운로드 및 백그라운드 작업의 진행률을 표시합니다.

파일 다운로드의 진행률 표시

파일 다운로드의 진행률을 표시합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyGui.Add(Button, gDownloadFile, 파일 다운로드 시작)
MyGui.Show(w300 h150)

DownloadFile() {
    TotalSize := 100  ; 총 파일 크기(가정)
    Loop 100 {
        Sleep 100  ; 다운로드 속도를 시뮬레이션
        MyProgress.Value := A_Index  ; 진행률 증가
    }
}

설명

  • Loop 100: 100번 반복하며 다운로드 진행을 시뮬레이션합니다.
  • MyProgress.Value := A_Index: 진행률을 1%씩 증가시킵니다.

백그라운드 작업의 진행률 표시

백그라운드 작업의 진행률을 표시합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyGui.Add(Button, gStartTask, 작업 시작)
MyGui.Show(w300 h150)

StartTask() {
    Loop 100 {
        Sleep 50  ; 백그라운드 작업 속도를 시뮬레이션
        MyProgress.Value := A_Index  ; 진행률 증가
    }
    MsgBox 작업 완료!
}

설명

  • Loop 100: 백그라운드 작업을 100번 반복합니다.
  • MyProgress.Value := A_Index: 작업 진행률을 표시합니다.

Progress 상태 파일에 저장

현재의 진행률을 파일에 저장합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, vProgressValue w200 h20)
MyGui.Add(Button, gSaveProgress, 파일에 저장)
MyGui.Show(w300 h150)

SaveProgress() {
    Gui, Submit, NoHide
    FileAppend, 진행률: %ProgressValue%, 진행률.txt
    MsgBox 진행률이 '진행률.txt' 파일에 저장되었습니다.
}

설명

  • FileAppend: 현재의 진행률 값을 진행률.txt 파일에 저장합니다.
  • ProgressValue: Progress 컨트롤의 현재 진행률 값을 반환합니다.

조건에 따른 진행률 변경

조건에 따라 Progress의 진행률을 변경합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyGui.Add(Button, gChangeProgress, 조건에 따라 변경)
MyGui.Show(w300 h150)

ChangeProgress() {
    Random, ProgressValue, 0, 100
    MyProgress.Value := ProgressValue
}

설명

  • Random, ProgressValue, 0, 100: 0~100 사이의 임의의 값을 생성합니다.
  • MyProgress.Value := ProgressValue: Progress의 진행률을 랜덤 값으로 변경합니다.

1초마다 진행률 업데이트

1초마다 진행률을 자동으로 업데이트합니다.

MyGui := Gui()
MyProgress := MyGui.Add(Progress, w200 h20)
MyGui.Show(w300 h150)
SetTimer(() => {
    MyProgress.Value += 5
    If (MyProgress.Value > 100) 
        MyProgress.Value := 0
}, 1000)

설명

  • SetTimer: 1초마다 진행률을 5% 증가시킵니다.
  • If (MyProgress.Value > 100): 진행률이 100%를 초과하면 다시 0%로 초기화합니다.

향후 추가 예정

  • Progress의 동적 생성 및 제어
  • 파일 다운로드 및 작업 진행률 시각화
  • 조건에 따른 Progress 상태 복원
Subscribe
Notify of
guest
0 댓글
Inline Feedbacks
View all comments