▣ 3단계: 선 굵기 조절 기능 추가
이번 단계에서는 사용자가 선의 굵기를 조절할 수 있도록 `Scale` 위젯(슬라이더)을 추가합니다.
✔ 코드
import tkinter as tk
def start_draw(event):
global last_x, last_y
last_x, last_y = event.x, event.y
def draw(event):
global last_x, last_y
width = brush_size.get()
canvas.create_line(last_x, last_y, event.x, event.y, fill='black', width=width)
last_x, last_y = event.x, event.y
def update_from_slider(value):
"""슬라이더가 움직였을 때 드롭다운도 함께 업데이트"""
dropdown_var.set(int(value)) # 드롭다운 값 갱신
def update_from_dropdown(*args):
"""드롭다운 선택 시 슬라이더도 함께 업데이트"""
brush_size.set(dropdown_var.get()) # 슬라이더 값 갱신
root = tk.Tk()
root.title("그림판")
# 상단 프레임
top_frame = tk.Frame(root)
top_frame.pack(side="top", fill="x")
# 선 굵기 설정 변수
brush_size = tk.IntVar(value=2)
# 슬라이더
slider = tk.Scale(top_frame, from_=1, to=10, orient="horizontal", variable=brush_size,
label="선 굵기 (슬라이더)", command=update_from_slider)
slider.pack(side="left", padx=10, pady=5)
# 드롭다운 옵션
dropdown_var = tk.IntVar(value=2)
dropdown_options = [1, 2, 4, 6, 8, 10]
dropdown_menu = tk.OptionMenu(top_frame, dropdown_var, *dropdown_options)
dropdown_menu.config(width=10)
dropdown_var.trace_add("write", update_from_dropdown)
dropdown_menu.pack(side="left", padx=10, pady=5)
# 캔버스
canvas = tk.Canvas(root, bg="white", width=800, height=600)
canvas.pack(fill="both", expand=True)
# 마우스 이벤트 바인딩
canvas.bind("<Button-1>", start_draw)
canvas.bind("<B1-Motion>", draw)
root.mainloop()
✔ 설명
- 슬라이더에서 값을 바꾸면 update_from_slider()가 드롭다운 값을 자동 반영합니다.
- 드롭다운에서 값을 선택하면 update_from_dropdown()이 슬라이더를 자동으로 갱신합니다.
- 변수는 IntVar로 공유하여 두 위젯을 연결합니다.
✔ 결과
슬라이더를 조절한 뒤 마우스로 선을 그리면, 선택한 굵기에 맞게 선이 그려집니다.
'구현' 카테고리의 다른 글
AI와 협업 프로젝트: 구현 2/6 확장 모듈 (0) | 2025.05.04 |
---|---|
AI와 협업 프로젝트: 구현 1/6 코어 (0) | 2025.05.04 |
파이썬으로 그림판 만들기 (5단계: 지우개) (0) | 2025.04.16 |
파이썬으로 그림판 만들기 (4단계: 색 선택) (1) | 2025.04.15 |
파이썬으로 간단한 그림판 만들기 (1~2단계) (1) | 2025.04.06 |