티스토리 뷰
목차
파이썬 gui 예제 3개 소개합니다. Python 거북이(turtle)로 그림 그리는 소스이며 아래와 같습니다.
- 별 그리기
- 삼각형 그리기
- 사각형 4개 붙여서 그리기
실행하면 아래와 같이 원하는 지점에 별을 여러 개 그릴 수 있습니다.
[디자인 프로그래밍 강좌]
전체 gui 소스는 아래와 같으며 우선 별 그리는 파이썬 소스를 먼저 소개합니다.
◆ 파이썬 거북이(turtle)로 별 그리기 전체 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #-*- coding: utf-8 -*- import turtle import random def star(t): t.left(36) for i in range(5): t.forward(200) t.left(144) def onPress(): r = random.randrange(256) g = random.randrange(256) b = random.randrange(256) color = '#{:02x}{:02x}{:02x}'.format(r,g,b) scr.bgcolor(color) print('color :', color) def onClick(x, y): t.penup() t.goto(x, y) t.pendown() star(t) t = turtle.Turtle() t.shape('turtle') scr = turtle.Screen() scr.bgcolor('#ff7f00') scr.onclick(onClick) scr.onkey(onPress, 'c') scr.onkey(scr.bye, 'q') scr.listen() scr.mainloop() | cs |
6번 라인이 별 그리는 gui 소스입니다.
12번 라인 onPress 함수는 배경 화면 색상을 랜덤하게 변경합니다.
21번 라인 onClick 함수를 통해 별 그리기 좌표를 생성합니다.
31번 라인 turtle.Scrren 변수를 생성하여 32번 라인에서 배경 화면을 설정합니다.
34번 라인, 마우스 클릭 이벤트로 onClick 함수를 설정합니다.
35번 라인, 키보드 입력 이벤트로 onPress 함수를 설정합니다. 키보드 c 누르면 배경 화면이 바뀝니다.
36번 라인, 파이썬 거북이(터틀) 종료 이벤트를 설정합니다. 키보드 q 누르면 프로그램 종료됩니다.
■ 결과
[디자인 프로그래밍 강좌]
위 gif 처럼 키보드를 누르면 python 거북이(터틀)가 움직이며 별을 그립니다.
별을 그릴 때, 키보드 c 누르면 gui 배경화면이 바뀝니다.
[디자인 프로그래밍 강좌]
위는 마우스로 화면 아무 곳을 찍고 키보드 c 키를 연타했을 경우입니다.
◆ Python Turtle 삼각형 그리기
gui 전체 소스 26번 라인에서 호출하는 함수를 아래 triangle 함수로 교체하면 삼각형 그림 그릴 수 있습니다.
1 2 3 4 5 6 | def triangle(t): t.forward(200) t.left(120) t.forward(200) t.left(120) t.forward(200) | cs |
■ 결과
[디자인 프로그래밍 강좌]
◆ 파이썬 거북이(터틀)로 사각형 4개 붙여 그리기
사각형 4개를 그리는데 모두 이어 붙이도록 합니다.
1 2 3 4 5 6 | def farm(t): for i in range(4): for j in range(4): t.forward(200) t.left(90) t.left(90) | cs |
■ 결과
[디자인 프로그래밍 강좌]
파이썬 gui. 삼각형 그리기 함수와 마찬가지로 전체 소스 26번 라인에서 호출하는 함수를 위 farm으로 교체하면 됩니다.
이상 Python gui 예제 3개였습니다. 그리는 예제 소스 자체는 이해하기 어렵지 않으니 쉽게 응용할 수 있으실 겁니다.
관련 글
▷ 파이썬 컴프리헨션 예제 8개 for if dict zip map
▷ 파이썬 print 재귀함수, 반복 출력, 문자열 거꾸로 뒤집기
▷ 파이썬 정렬 sort sorted reverse=true 예제 4개
ⓒ written by vicddory