1. Introduction
스파이더Spyder IDE 공식 다운로드 링크입니다. Thonny 대신 사용할 수 있습니다. 시스템에 여러 파이썬 버전이 동시에 설치되어 있는 상황은 바람직하지 못합니다. 학습 초기에는 단 하나의 Python 환경으로 통일하는 것이 좋습니다.
- Spyder 현재 최신 버전은 v6.1.3 (x64 기준.)
- 파이썬 정상 작동 실험용 기초 터틀 코드 하나. 아래 코드들은 기본 파이썬만으로도 충분합니다만. ^.^;
- sys 모듈에 대해서는 사용법만 아주 조금 맛보기로 다룹니다.
- sys 모듈에 대해서는 내장 도움말을 참고하는 것이 좋을 듯. 대부분의 입문용 교재에서는 생략하고 있는 경우가 많습니다.
- 개인적인 견해이지만, sys, os, re, math, sqlite3 모듈 등은 필수 모듈로 생각됩니다. 이 부분은 추후 다른 글에서 정리하기로.
# 파이썬과 Thonny IDE, 추가 삭제만 지금 열 번 중... 파이썬 인터프리터의 설치와 삭제 관련 지식 정리 중.
# 최신 Python 버전과 Thonny IDE의 패키지 관리 호환성 문제 때문임.
# 스파이더Spyder IDE 역시 파이썬을 내장하고 있습니다. 내장 파이썬의 버전은 v3.12.11.
# 파이썬 공식 사이트(python.org)에서 독립 바이너리 파일로 정식 배포하는 버전은 v3.12.10.
# v3.12.11. 공식 바이너리 배포판(~~~.msi 또는 ~~~.exe, ~~~.zip)은 ... 없습니다. ㅡ.ㅡ;
# 이 둘 사이에는 약간의 차이가 있으나 여기에서는 무시하고 설치하겠습니다.
# 하나의 컴퓨터에 여러 버전의 파이썬을 설치할 수는 있지만 권장할 수는 없습니다.
2. Code
import turtle
import sys
screen = turtle.Screen()
t0 = turtle.Turtle()
t1 = turtle.Turtle()
t2 = turtle.Turtle()
# 그리기 자리 잡기, 위치 분리.
def gotoStartingPosition():
t1.penup()
t1.goto(-120, 0)
t1.pendown()
# ...
t2.penup()
t2.goto(120, 0)
t2.pendown()
# 가운데 기본 박스 그리기
def box1():
for i in range(4):
t0.fd(100)
t0.rt(90)
# 나머지 두 개의 박스 그리기용 함수. 함수 인자가 2개 입니다.
# 이런 방식을 잘 살펴보세요. 중요합니다. 인자 t는 거북이 객체입니다.
def draw_box(t, size=100):
for _ in range(4):
t.forward(size)
t.right(90)
# 메인 함수
def main():
gotoStartingPosition()
box1() # 기본 박스 1 개 그리기
draw_box(t1, 100) # 나머지 두 개의 박스 그리기, 이런 방식의 사용법에 주목하세요.
draw_box(t2, 100)
turtle.done() # screen.mainloop()와 거의 동일한 역할을 한다.
# screen.mainloop() : 의미상 중복, 불필요.
print(sys.getsizeof(t0), "Bytes.")
print("My Python's Version is ", sys.winver)
print(sys.copyright)
# 기타 등등. ^.^;
# sys.exit()
# 코드로 직접 창 닫기
# 코드에서 screen.bye() 또는 turtle.bye() 등을 호출해야 닫힙니다.
# 2000 밀리초 후에 창 닫기
# screen.ontimer(lambda: screen.bye(), 2000)
# screen.mainloop()
# 메인함수 콜, 실행.
main()
3. Result
설치 후 스크린 샷 하나 정도를 여기에! ^.^;
4. Notes
■ 주요 코드 리뷰
# 박스 그리기 함수.
def draw_box(t, size=100):
for _ in range(4):
t.forward(size)
t.right(90)
- 평범한 박스를 그리는 draw_box()함수입니다. 그런데 인자가 2개 입니다. 이런 방식을 잘 살펴보세요. 중요합니다. 첫번째 인자 t는 거북이 객체입니다. 두번째 인자는 한 변의 길이입니다. 이렇게 2개의 인자를 한 번에 입력받아서 그릴 수 있으면 편리합니다.
- main() 함수에서 위 함수를 호출해서 사용하고 있습니다.
# 메인 함수
def main():
gotoStartingPosition()
box1() # 기본 박스 1 개 그리기
draw_box(t1, 100) # 나머지 두 개의 박스 그리기, 이런 방식의 사용법에 주목하세요.
draw_box(t2, 100)
- box1() 함수에서는 그냥 그리고 있습니다.
- draw_box() 함수에서는 그림을 그리는데 동원될 거북이를 선택하고 한 변의 길이도 선택할 수 있습니다.
- 관련 정보들이 명백하다면 이 방식이 더 좋아 보입니다.
■ sys 모듈 맛보기( 코드 상단에 import sys 필요함)
print(sys.getsizeof(t0), "Bytes.")
print("My Python's Version is ", sys.winver)
print(sys.copyright)
# sys 모듈을 사용하려면 import sys를 추가해야 합니다.
# Python 입문서 많은 교재들이 sys 모듈에 대해서 다루고 있지 않습니다. 예외적인 경우도 제법 있지만. ^.^;
# 표준 파이썬을 설치하면 기본적인 도움말 파일도 함께 설치됩니다. 이 도움말 파일에는 매우 유용한 정보들이 가득합니다.
# 적극 활용될 수 있으면 좋겠습니다.
- print(sys.getsizeof(t0), "Bytes.")
# sys.getsizeof() 함수는 인자로 객체가 주어지고 그 객체가 차지하는 메모리 사용 크기를 반환합니다. 단위는 바이트Byte.
# 여기서는 거북이 객체 t0이 인자로 주어졌습니다.
# 제가 만든 거북이가 48바이트라고 합니다. ^.^;
# 실행 결과 : 48 Bytes.
- print("My Python's Version is ", sys.winver)
# sys.winver는 마치 win...dows version 느낌이라서 오해하기 쉽습니다.
# windows python's version의 약자로 이해하는 것이 좋겠습니다.
# 현재 내가 사용하고 있는 파이썬의 버전이 출력됩니다.
# 실행 결과 : My Python's Version is 3.12
- print(sys.copyright)
# copyright는 저작권을 의미합니다. copy + right인데 여기서 카피copy는 복사가 아니라 책을 한 권 찍어낼 때마다 그 한 권 한 권을 카피copy라고 합니다. 따라서 책 혹은 그와 유사한 다른 형태로 출판할 수 있는 출판물 한 부를 의미합니다. right는 오른쪽이라는 뜻도 있지만, 여기서는 권리, 권한을 의미합니다. copyright는 보통 '저작권' 혹은 '출판물 저작권'을 의미합니다.
# 실행 결과 : Copyright (c) 2001-2023 Python Software Foundation.
All Rights Reserved.
(참고 : 아래 줄들도 추가 출력됨.. 아마도 파이썬을 만드는데 기여한 기관이나 단체, 기업들로 생각됩니다.)
Copyright (c) 2000 BeOpen.com.
All Rights Reserved.
Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.
>>>
■ Thonny IDE 대신 사용하려면 이것, 스파이더Spyder :
- 파일 크기 : 약 518MB.
■ 스파이더Spyder 단독 패키지(윈도우용, 64비트) 다운로드 주소 ::
https://docs.spyder-ide.org/current/installation.html
Install Guide — Spyder 5 documentation
Install Guide Spyder is relatively easy to install on Windows, Linux and macOS. Just make sure to read and follow these instructions with care. If you run into problems, before posting a report, please consult our comprehensive troubleshooting guide and se
docs.spyder-ide.org
위 링크 중간 쯤, Downloading and installing 부분에 있는 Windows 아이콘 클릭해서 다운로드.
■ 직접 링크 :: 직접 링크는 해당 사이트 사정에 따라서 예고없이 수시로 변경될 수 있습니다.
https://github.com/spyder-ide/spyder/releases/latest/download/Spyder-Windows-x86_64.exe
.
.
다른 대용품은... 제법 많지만 : VS Code, PyScripter, PyCharm(비교적 덩치가 큼) 정도.
■ 주의 사항과 해법
- 주의 사항 : 스파이더Spyder IDE에서는 위 기본 코드를 연속 실행하면 실행 중 에러가 생깁니다. 스파이더 내장 파이썬의 콘솔 커널을 재시작ReStart하면 해결되기는 합니다만. 꽤 거슬립니다. 스파이더 내장 콘솔이 아니라 외부 콘솔에서 실행하면 또 문제없이 여러번 이어서 실행해도 괜찮습니다. 표준 파이썬 IDLE에서 실행하면 이런 설정없이도 잘 됩니다. 구관이 명관인가요? ^.^;
- 해법 : 스파이더에서 외부 콘솔로 실행하면 됩니다. 단축키로 지정 가능. 제 경우 Alt+F5로 지정해서 해보니 잘 됩니다.
스파이더Spyder Menu / Tools / Preferences / (좌측 리스트에서) Keyboard Shortcuts / run file in external_terminal / Alt + F5 로 지정하고 저장. 버전에 따라 지정된 단축키는 스파이더Spyder IDE를 재시작해야 적용될 수도 있습니다.
단축키 목록 하단에 작은 검색창이 있으므로 이것을 활용하는 것이 좋습니다. external terminal이라고 입력하고 나타나는 필터링된 리스트에서 run file in external_terminal 항목을 더블 클릭해서 단축키 지정 사항을 편집하시면 됩니다. (단축키 겹침 주의할 것.)
이후 코드 실행시에 Alt + F5를 치면 스파이더 외부 터미널에서 실행됩니다. 여기서 스파이더 외부 터미널이란 일반적으로 Windows 자체 터미널을 의미합니다. CMD 창.
5. 응용 연습 (중급, 고급)
# 중, 고급 예제이므로 왕초보들은 몰라도 될 듯, 제외, 패스. 해설도 지금은 생략. ^.^;
# 구태여 이렇게까지 해야할까 생각될 수도 있겠지만, 이런 방법도 있다는 것을 알아두면 좋을 듯.
# 여기서는 응용 연습 과제로, 창 분리 그리기 실행.
# 몇몇 지금까지 잘 다루어 본 적이 없는 명령어들도 맛보기용.
# Tkinter의 Canvas 부분은 제법 학습해야 할 내용이 많음.
# 이 부분은 Tkinter 전용 교재를 참고하거나 앤런 무어, 김영탁, 또는 Mark Lutz(Programming Python, 4thEd.) 등의 교재를 참고할 것.
import tkinter as tk
import turtle
root = tk.Tk()
root.withdraw() # 기본 루트 숨기기 (선택)
# 첫 번째 창
win1 = tk.Toplevel()
win1.title("Window 1")
canvas1 = tk.Canvas(win1, width=400, height=300)
canvas1.pack() # 캔버스도 팩 대상에 해당됨. ^.^;
screen1 = turtle.TurtleScreen(canvas1) # 스크린을 캔버스에? 아니면, 캔버스를 스크린에? 어느 쪽? 퀴즈 1.
t1 = turtle.RawTurtle(screen1) # RawTurtle()?? 에?? 이 ㄴㅅ은 뭘까요? Quiz 2.
# 두 번째 창
win2 = tk.Toplevel() # James님은 King 레벨, 예송이는 애송이 레벨. 민송이는 죄송 레벨. ^.^;
win2.title("Window 2")
canvas2 = tk.Canvas(win2, width=400, height=300)
canvas2.pack()
screen2 = turtle.TurtleScreen(canvas2)
t2 = turtle.RawTurtle(screen2)
# 각각 사각형 그리기 함수.
# 인수가 2개. 이런 방법을 잘 봐두어야 함.
def draw_box_raw(t, size=100):
for _ in range(4):
t.forward(size)
t.right(90)
# 그리기 함수 콜, 이런 방법을 잘 봐두어야 함.
draw_box_raw(t1, 100)
draw_box_raw(t2, 100)
# Tkinter 이벤트 루프 시작 (한 번만 호출)
tk.mainloop()
6. Files
티스토리 코드를 그대로 복붙하면 아마도 유니코드 문자들이 포함되어 원치 않는 텍스트 상태가 될 수 있습니다.
이 경우, 찾기- 바꾸기 기능이나 검색-바꾸기 기능이 있는 전용 코드 에디터 등을 통해서 변환 후 사용해야 합니다.
7. Ref.
1) 강환수, 신용현. Python으로 누구나 코딩(기본 참고서)
2) 천인국. Python Express, 개정판.
3) 우재남. Python, 4판
4) 김영탁. Python Programming, 컴퓨팅사고와 파이썬 프로그래밍
5) 앨런 무어. Tkinter GUI 프로그래밍, 2nd Ed.
6) Mark Lutz. Programming Python 4판.
7) Python 내장 도움말.
Happy Programming!
^.^;
'Programming > Python' 카테고리의 다른 글
| Python GUI - wxPython - Basic Ex. 001 (0) | 2026.05.31 |
|---|---|
| 스파이더(Spyder) IDE에서 pip 및 pygame 설치 - 001 (0) | 2026.04.04 |
| Python 실행 환경 기초 - 001 - CMD 창에서 실행하기 (0) | 2026.04.01 |
| Python Basic : Tuple (0) | 2026.01.19 |
| Python 3D - Panda3D SDK(v1.10.15) 설치 및 테스트 (0) | 2025.12.20 |