04 버튼(Button)

Estimated reading: 2 minutes 20 views

이 문서에서는 AutoHotkey의 Button 컨트롤 생성 및 제어에 대해 학습합니다. 다양한 수준의 예제를 통해 Button 컨트롤 추가, 동적 제어, 이벤트 처리 등의 고급 기능을 다룹니다.

  • 초급: 기본 Button 컨트롤 생성, 크기 설정, 기본 클릭 이벤트를 학습합니다.
  • 중급: 동적 버튼 추가, 버튼 스타일 변경(투명, 비활성화) 기능을 학습합니다.
  • 고급: 버튼 클릭 이벤트를 활용하여 다중 버튼 제어, 비동기 작업 실행, 동적 버튼 생성 등을 학습합니다.

초급 (기본 사용법)

목표: 기본적인 Button 컨트롤 생성 및 클릭 이벤트 등록 방법을 학습합니다.

기본 Button 컨트롤 생성

기본 Button 컨트롤을 생성합니다.

MyGui := Gui()
MyGui.Add(Button, w100, 확인)
MyGui.Show(w200 h150)

설명

  • MyGui.Add(“Button”, “w100”, “확인”): 너비 100px의 확인 버튼을 추가합니다.
  • MyGui.Show(“w200 h150”): 너비 200px, 높이 150px의 창을 표시합니다.

버튼 클릭 이벤트 추가

버튼을 클릭했을 때 동작하는 이벤트를 추가합니다.

MyGui := Gui()
MyGui.Add(Button, gOnButtonClick w100, 확인)
MyGui.Show(w200 h150)

OnButtonClick() {
    MsgBox 버튼이 클릭되었습니다!
}

설명

  • gOnButtonClick: 버튼 클릭 시 OnButtonClick 함수를 호출합니다.
  • MsgBox: 클릭 시 “버튼이 클릭되었습니다!” 메시지를 표시합니다.

버튼 크기 및 위치 조정

버튼의 위치와 크기를 설정합니다.

MyGui := Gui()
MyGui.Add(Button, x50 y30 w150 h40, 위치 조정 버튼)
MyGui.Show(w300 h200)

설명

  • x50 y30: 버튼의 X 좌표를 50, Y 좌표를 30으로 설정합니다.
  • w150 h40: 너비 150px, 높이 40px의 버튼을 생성합니다.

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

목표: Button 컨트롤의 스타일을 변경하고, 동적 버튼 추가 및 투명 버튼을 학습합니다.

버튼 비활성화

버튼을 비활성화하여 클릭할 수 없도록 만듭니다.

MyGui := Gui()
MyGui.Add(Button, Disabled w100, 비활성화 버튼)
MyGui.Show(w200 h150)

설명

  • Disabled: 버튼을 비활성화하여 클릭할 수 없게 만듭니다.
  • w100: 너비 100px로 버튼의 너비를 설정합니다.

버튼을 클릭하여 다른 버튼 비활성화

버튼 클릭 시 다른 버튼을 비활성화합니다.

MyGui := Gui()
MyGui.Add(Button, gDisableButton w100 vButton1, 버튼 비활성화)
MyGui.Add(Button, w100 vButton2, 비활성화 될 버튼)
MyGui.Show(w300 h150)

DisableButton() {
    GuiControl, Disable, Button2
}

설명

  • GuiControl, Disable, Button2: Button2을 비활성화합니다.
  • vButton1, vButton2: 각각 Button1Button2라는 컨트롤 이름을 부여합니다.

투명 버튼 생성

투명한 버튼을 생성하여 배경과 융합되게 만듭니다.

MyGui := Gui()
MyGui.Add(Button, BackgroundTrans w100, 투명 버튼)
MyGui.Show(w200 h150)

설명

  • BackgroundTrans: 버튼의 배경을 투명하게 설정합니다.
  • w100: 너비 100px로 버튼의 너비를 설정합니다.

동적 버튼 추가

버튼을 동적으로 추가하여 필요한 만큼 버튼을 생성합니다.

MyGui := Gui()
Loop 3 {
    MyGui.Add(Button, w100, 버튼  A_Index)
}
MyGui.Show(w300 h200)

설명

  • Loop 3: 3개의 버튼을 반복적으로 추가합니다.
  • A_Index: 루프의 현재 인덱스 번호를 버튼의 이름으로 사용합니다.

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

목표: Button 컨트롤을 제어하고, 버튼 이벤트를 활용한 동적 작업을 학습합니다.

동적 버튼 클릭 이벤트 추가

동적 버튼을 생성하고 클릭할 때마다 메시지를 다르게 표시합니다.

MyGui := Gui()
Loop 3 {
    MyGui.Add(Button, gOnButtonClick w100, 버튼  A_Index)
}
MyGui.Show(w300 h200)

OnButtonClick() {
    MsgBox 클릭한 버튼의 이름:  A_GuiControl
}

설명

  • gOnButtonClick: 버튼 클릭 시 OnButtonClick 함수를 호출합니다.
  • A_GuiControl: 클릭한 버튼의 이름을 반환합니다.

비동기 작업 버튼 실행

버튼을 클릭하면 일정 시간 후에 작업이 실행되도록 비동기 작업을 수행합니다.

MyGui := Gui()
MyGui.Add(Button, gStartAsyncTask w100, 비동기 작업 시작)
MyGui.Show(w300 h150)

StartAsyncTask() {
    MsgBox 작업 시작
    Sleep 3000
    MsgBox 작업 완료
}

설명

  • Sleep 3000: 작업을 3초 동안 대기합니다.
  • MsgBox: 대기 후 “작업 완료” 메시지를 표시합니다.

버튼을 클릭하여 새 버튼 생성

버튼을 클릭하면 새로운 버튼을 생성합니다.

MyGui := Gui()
MyGui.Add(Button, gAddNewButton w100, 새 버튼 추가)
MyGui.Show(w300 h150)

AddNewButton() {
    Static ButtonCount := 1
    ButtonCount++
    MyGui.Add(Button, w100, 새로운 버튼  ButtonCount)
    MyGui.Show()
}

설명

  • Static ButtonCount: 클릭할 때마다 버튼 수를 카운트합니다.
  • MyGui.Add(“Button”): 새로운 버튼을 추가하고 MyGui.Show()로 다시 표시합니다.

버튼 클릭으로 GUI 닫기

버튼을 클릭하면 GUI 창을 닫습니다.

MyGui := Gui()
MyGui.Add(Button, gCloseGui w100, 닫기)
MyGui.Show(w200 h150)

CloseGui() {
    MyGui.Destroy()
}

설명

  • MyGui.Destroy(): GUI 창을 닫고 메모리를 해제합니다.

향후 추가 예정

  • 이벤트 핸들링 심화: 여러 개의 버튼에 대한 다양한 이벤트를 학습합니다.
  • 버튼 스타일 및 애니메이션: 버튼에 애니메이션 효과를 추가합니다.
  • 동적 생성 및 제어: 사용자의 입력에 따라 동적으로 버튼을 생성하고 제거합니다.
Subscribe
Notify of
guest
0 댓글
Inline Feedbacks
View all comments