티스토리 뷰
Presentation은 파이썬 표준 라이브러리가 아니라 python-pptx라는 외부 라이브러리의 일부입니다.
로컬 환경에서 해당 코드를 실행하려면 아래 명령어로 python-pptx를 먼저 설치해야 합니다:
pip install python-pptx
그다음 위의 코드를 실행하면 PPT 파일이 정상적으로 생성됩니다.
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
# 슬라이드 데이터: 제목과 본문 텍스트
slides_data = [
("강의 시작 안내", "강의 제목: '웹 개발의 첫걸음'\n- 강사 소개, 강의 목표 간단 소개\n- 오늘 배울 내용 요약:\n - 웹의 동작 원리\n - HTML/CSS/JS의 역할\n - 개발도구 설치 및 준비\n - 첫 번째 웹페이지 만들기"),
("웹이란 무엇인가?", "- 웹(Web)은 World Wide Web의 줄임말\n- 인터넷 상에서 문서(HTML)와 정보를 주고받는 시스템\n- 브라우저를 통해 접근 가능 (크롬, 엣지 등)"),
("웹의 동작 구조", "- 클라이언트(브라우저) → 서버 → 응답 구조\n- HTTP 요청/응답 흐름\n- 정적 페이지 vs 동적 페이지 차이"),
("웹 구성 요소", "- HTML: 구조 (뼈대)\n- CSS: 디자인 (옷)\n- JavaScript: 동작과 상호작용 (근육)\n- 이 세 가지가 조화를 이뤄 하나의 웹페이지를 구성"),
("웹개발에 필요한 도구들", "- 텍스트 편집기: Notepad++, VSCode 등\n- 웹 브라우저: Chrome (개발자도구 활용 가능)\n- 폴더 관리 및 브라우저 미리보기"),
("Notepad++ 설치 방법", "- 공식 홈페이지 방문: https://notepad-plus-plus.org/\n- 설치 파일 다운로드 및 설치 과정 스크린샷\n- 한글 언어 설정 방법 안내"),
("Notepad++ 기본 인터페이스", "- 새 파일 생성 방법\n- 탭 구조\n- 줄 번호 보기, 자동 들여쓰기 설정\n- 저장 시 `.html` 확장자로 저장"),
("첫 HTML 파일 만들기", "실습: `hello.html` 파일 생성\n```html\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Hello Web</title>\n</head>\n<body>\n <h1>Hello, Web!</h1>\n <p>처음으로 만든 나의 웹페이지입니다.</p>\n</body>\n</html>\n```"),
("웹 브라우저에서 열기", "- 파일을 더블 클릭하거나, 브라우저에 드래그하여 열기\n- 코드가 어떻게 표현되는지 확인\n- 간단한 색상, 폰트 수정 실습 안내 (다음 시간 예고)"),
("개발자 도구 소개", "- F12 키 또는 우클릭 → 검사\n- HTML 구조 확인\n- Console에서 오류 확인 및 JS 테스트"),
("오늘 배운 내용 정리", "- 웹의 구조와 역할 이해\n- Notepad++ 설치 및 사용법 익힘\n- HTML 첫 문서 실습 완료"),
("다음 시간 예고", "- HTML 기본 태그들 (제목, 문단, 줄바꿈, 주석 등)\n- 나만의 자기소개 페이지 만들기\n- 미리 준비: 좋아하는 색상, 취미, 소개글 메모해오기"),
("질의응답 & 마무리", "- Q&A\n- 과제 안내 (선택): `hello.html` 예제에 글자 색상, 본인 이름 넣어보기\n- 강의자료 제공 예정 안내")
]
# 새 프레젠테이션 생성
prs = Presentation()
# 디자인 적용용 레이아웃 선택 (제목 + 콘텐츠)
layout = prs.slide_layouts[1]
for title, content in slides_data:
slide = prs.slides.add_slide(layout)
title_placeholder = slide.shapes.title
content_placeholder = slide.placeholders[1]
# 제목 설정
title_placeholder.text = title
# 본문 텍스트 설정
tf = content_placeholder.text_frame
tf.clear()
for line in content.split('\n'):
p = tf.add_paragraph()
p.text = line
p.font.size = Pt(18)
p.font.name = '맑은 고딕'
p.space_after = Pt(4)
# 파일 저장
pptx_path = "1주차_웹개발_강의자료_Part1.pptx"
prs.save(pptx_path)
pptx_path
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
# 프레젠테이션 객체 생성
prs = Presentation()
slide_width = prs.slide_width
slide_height = prs.slide_height
def add_title_slide(title, subtitle):
slide_layout = prs.slide_layouts[0] # 제목 슬라이드
slide = prs.slides.add_slide(slide_layout)
slide.shapes.title.text = title
slide.placeholders[1].text = subtitle
def add_content_slide(title, content):
slide_layout = prs.slide_layouts[1] # 제목 + 본문
slide = prs.slides.add_slide(slide_layout)
slide.shapes.title.text = title
content_placeholder = slide.placeholders[1]
content_placeholder.text = content
# 제목 슬라이드
add_title_slide("웹 개발 기초 – 건물을 짓는 것과의 비유", "HTML, CSS, JavaScript, MySQL, PHP를 쉽게 이해하기")
# HTML 슬라이드
add_content_slide("HTML = 건물의 뼈대 (골조)",
"- 웹페이지의 구조를 만드는 역할\n"
"- 제목, 문단, 이미지, 버튼 등 배치\n"
"- 웹사이트의 기본 틀\n\n"
"🧰 예시:\n<h1>회사 소개</h1>\n<p>웹 개발을 전문으로 합니다.</p>"
)
# CSS 슬라이드
add_content_slide("CSS = 인테리어 (디자인)",
"- 웹페이지를 꾸미는 역할\n"
"- 색상, 폰트, 여백, 배치 등\n"
"- 사용자에게 보기 좋게 전달\n\n"
"🧰 예시:\nh1 { color: navy; font-size: 32px; }"
)
# JavaScript 슬라이드
add_content_slide("JavaScript = 자동문, 엘리베이터 (기능과 움직임)",
"- 웹페이지에 동작과 기능 추가\n"
"- 사용자와의 상호작용 처리\n"
"- 클릭, 입력, 애니메이션 등\n\n"
"🧰 예시:\ndocument.getElementById('btn').onclick = function() {\n alert('버튼 클릭!');\n};"
)
# MySQL 슬라이드
add_content_slide("MySQL = 서류보관실 (데이터 저장소)",
"- 데이터를 저장하고 관리\n"
"- 사용자 정보, 게시글 등 보관\n"
"- 데이터베이스 시스템\n\n"
"🧰 예시:\nSELECT name FROM users WHERE id = 1;"
)
# PHP 슬라이드
add_content_slide("PHP = 건물 관리자 (서버 로직 처리)",
"- 사용자 요청을 처리하는 서버 언어\n"
"- 데이터베이스와 연결하여 결과 전달\n"
"- 로그인, 글쓰기, 처리 로직 수행\n\n"
"🧰 예시:\n<?php echo '안녕하세요, ' . $_POST['name']; ?>"
)
# 종합 정리 슬라이드
add_content_slide("웹 개발 기술 요약 – 건물에 비유",
"| 기술 | 역할 |\n"
"|------------|-------------------------|\n"
"| HTML | 뼈대/골조 (구조 설계) |\n"
"| CSS | 인테리어 (디자인 꾸미기)|\n"
"| JavaScript | 자동문/엘리베이터 (동작)|\n"
"| MySQL | 서류보관실 (데이터 저장)|\n"
"| PHP | 관리자 (서버 처리 로직) |"
)
# 파일 저장
pptx_path = "웹개발_건물비유_설명자료.pptx"
prs.save(pptx_path)
pptx_path
'IT tech Coding > python' 카테고리의 다른 글
dim_angular 함수를 제대로 사용해 보기... 이거 쉽지 않네요~ (0) | 2025.01.09 |
---|---|
dxf 엘리베이터 부속 만들기, 파이썬으로 도전, BACK COVER 설계 및 전개도 작성 (0) | 2025.01.08 |
pythonanywhere의 VS Code를 통한 SSH 문제 해결방법 찾기 (0) | 2024.12.22 |
python 캐드 치수선 '직선거리' 1000 치수선 성질 유지하기 ezdxf (0) | 2024.12.12 |
python 조건문 활용으로 프로그래밍 효율성을 높이는 방법 (0) | 2024.12.05 |
- Total
- Today
- Yesterday
- #계층형데이터
- 도면자동생성
- 구글드라이브API
- isset을 적용해야 하는 이유
- #카테고리트리
- General error: 2031
- 오토핫키가이드
- ajax오류메시지
- 웹제작강의안2주차
- #php에러해결 #php경고메시지 #nonwellformednumeric #php초보자팁 #웹개발에러 #프로그래밍디버깅 #php정규식 #코드디버깅팁 #웹개발문제해결 #php숫자형변환
- 티스토리챌린지
- #데이터무결성
- #textarea #자동높이조절 #ux개선 #웹개발 #프론트엔드 #자바스크립트 #html팁 #웹디자인 #uiux #코딩팁
- #트리구조
- json파일형태보기
- 캐드자동작도
- #웹개발
- 엑셀입력보호
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 효율적코딩방법
- #tuigrid #자바스크립트그리드 #행삽입 #행삭제 #웹개발팁 #프론트엔드개발 #javascriptgrid #데이터테이블 #ui개선 #그리드커스터마이징
- #데이터베이스설계
- 오블완
- json파일편하게보는법
- 엑셀셀보호
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- #동적ui
- 코딩튜토리얼
- Bootstrap 5
- 엑셀보호
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |