Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter로 구현하는 On/Off 토글 버튼 스위치

Tkinter는 애플리케이션 개발에 필요한 다양한 위젯을 손쉽게 추가할 수 있는 기능을 제공합니다. 대표적인 위젯으로는 버튼(Button), 입력 상자(Entry), 텍스트 박스(Text Box), 슬라이더(Slider) 등이 있습니다. 이번 글에서는 클릭할 때마다 켜짐(On) 또는 꺼짐(Off) 상태로 전환되는 토글 버튼 스위치를 활용한 애플리케이션을 만드는 방법을 살펴보겠습니다.

이번 예제에서는 다음 두 가지 상태를 가진 버튼을 사용합니다.

  • Switch On (켜기)
  • Switch Off (끄기)

예제 코드

# Import tkinter in the notebook
from tkinter import *

# Create an instance of window of frame
win = Tk()

# set Title
win.title('On/Off Demonstration')

# Set the Geometry
win.geometry("600x400")
win.resizable(0, 0)

#Create a variable to turn on the button initially
is_on = True

# Create Label to display the message
label = Label(win, text="Night Mode is On", bg="white", fg="black", font=("Poppins bold", 22))
label.pack(pady=20)

# Define our switch function
def button_mode():
    global is_on

    #Determine it is on or off
    if is_on:
        on_.config(image=off)
        label.config(text="Day Mode is On", bg="white", fg="black")
        is_on = False
    else:
        on_.config(image=on)
        label.config(text="Night Mode is On", fg="black")
        is_on = True

# Define Our Images
on = PhotoImage(file="on.png")
off = PhotoImage(file="off.png")

# Create A Button
on_ = Button(win, image=on, bd=0, command=button_mode)
on_.pack(pady=50)

#Keep Running the window
win.mainloop()

코드 설명

핵심 동작 원리는 다음과 같습니다.

  • 상태 변수(is_on): 현재 스위치가 켜져 있는지 여부를 불리언 값으로 저장하여 초기값은 True(켜짐)로 설정합니다.
  • button_mode() 함수: 버튼이 클릭될 때마다 호출되며, 현재 상태에 따라 버튼의 이미지와 라벨의 텍스트·배경색을 교체한 뒤 상태 변수를 반전시킵니다.
  • PhotoImage: on.pngoff.png 두 개의 이미지 파일을 불러와 각각 켜짐/꺼짐 상태의 버튼 이미지로 사용합니다.
  • bd=0: 버튼의 기본 테두리를 제거하여 이미지 자체가 하나의 스위치처럼 보이도록 합니다.

참고: 스크립트와 같은 디렉터리에 on.png, off.png 이미지 파일이 미리 준비되어 있어야 정상적으로 실행됩니다.

실행 결과

위 코드를 실행하면 On/Off 모드를 전환할 수 있는 버튼이 포함된 창이 생성됩니다.

Tkinter로 구현하는 On/Off 토글 버튼 스위치

버튼을 클릭하면 아래와 같이 이미지와 라벨 메시지가 함께 전환됩니다.

Tkinter로 구현하는 On/Off 토글 버튼 스위치

마무리

이처럼 Tkinter의 Button, Label, PhotoImage 위젯과 간단한 상태 관리 변수만 있으면 별도의 외부 라이브러리 없이도 직관적인 On/Off 토글 스위치를 구현할 수 있습니다. 다크 모드 전환, 설정 페이지의 스위치 UI 등 다양한 데스크톱 애플리케이션에 응용해 보세요.