ㅇ 일자 : 2026년 4월 23일(목)
ㅇ 내용 : 팀프로젝트 과제 작성 및 토의, 수정 및 보완
1. "영수증 용도" 선택 화면에서 구현할 수 있는 함수들
1. 1. 숫자코드를 선택하도록 하는 방법
def issue_cash_receipt(choice):
# while과 조건문을 사용하여 영수증 사용 용도를 선택(조건을 선택하도록 choic 사용)
while True:
if choice == 1:
print("결과 : [소득공제용]")
break
elif choice == 2:
print("결과 : [연말정산용]")
break
elif choice == 3:
print("결과 : [발급 안함]")
break
else:
print("잘못된 번호를 선택하셨습니다. 1, 2, 3번 중 선택해 주세요.")
# 메뉴 데이터 딕셔너리
# 2. 사용자 입력 및 함수 실행
def script(order_dict, free_drink_count):
try:
user_input = int(input("현금영수증 용도를 선택하세요 (1.소득공제, 2.연말정산, 3. 발행 안함): "))
issue_cash_receipt(user_input)
#r_dict안의 데이터 읽어온 다음 값있는 값들만 적용
except ValueError:
print("숫자만 입력 가능합니다.")
print(f"{'영 수 증':^40}")
print("-------------------------------------")
print(f"{'상품명':^15}{'수량':^10}{'가격':^10}")
# 코드 설명
# 위 코드"^"는 파이썬의 f-string(포맷 문자열) 또는 format() 함수에서 사용하는 문자열 정렬 및 폭 지정 규칙.
# 표 형식으로 데이터를 깔끔하게 출력할 때 주로 사용함.
# 문법 구성 요소 : ^ (가운데 정렬): 텍스트를 지정된 공간의 중앙에 배치, <는 왼쪽 정렬, >는 오른쪽 정렬
# 숫자 (15, 10) : 해당 항목이 차지할 전체 칸 수(폭)를 의미
# { }: 값이 들어갈 자리를 나타내는 중괄호
# {'상품명':^15}: '상품명'이라는 글자를 포함해 총 15칸을 확보하고, 그 안에서 가운데 정렬
# {'수량':^10}: '수량'이라는 글자를 포함해 총 10칸을 확보하고, 가운데 정렬
# {'가격':^10}: '가격'이라는 글자를 포함해 총 10칸을 확보하고, 가운데 정렬
1. 2. 버튼 이미지를 포함하여 작성하는 방법 (검색 찾아보기)
# 화면을 만드는 도구 상자
import tkinter as tk
# [함수] 버튼을 만드는 공식
def 버튼_공장(글자, 색깔):
# font 설정을 추가하여 글자 크기를 키우고, 패딩을 통해 버튼 크기 조정
btn = tk.Button(win, text=글자, bg=색깔, width=15, height=5, font=("Arial", 12))
btn.pack(side="left", padx=20, pady=20) # side를 문자열 "left"로 변경
# [실행] 화면 조립하기
win = tk.Tk()
win.title("키오스크")
win.geometry("500x200") # 창 크기 설정
label = tk.Label(win, text="용도를 선택해 주세요", font=("돋움", 20))
label.pack(pady=20)
# 버튼들을 담을 프레임 생성 (위치 잡기 더 편함)
button_frame = tk.Frame(win)
button_frame.pack()
# 함수(공장)를 사용 버튼 3개
# side="left"로 설정했으므로 순서대로 가로로 배치됨
btn1 = tk.Button(button_frame, text="소득공제용", bg="mintcream", width=12, height=3)
btn1.pack(side="left", padx=10)
btn2 = tk.Button(button_frame, text="지출증빙용", bg="lavender", width=12, height=3)
btn2.pack(side="left", padx=10)
btn3 = tk.Button(button_frame, text="발급안함", bg="lightgray", width=12, height=3)
btn3.pack(side="left", padx=10)
win.mainloop()
2. 실습 후기
- 첫번째 팀프로젝트는 kiosk 프로그램 개발을 하는 것이다.
- 개발 목적 : 팀프로젝트를 통해 팀원들간 소통을 활성화 하고, 프로그램 개발과정을 이해하는 동시에 파이썬 언어를 이해한다.
- 시중에서 사용되고 있는 브랜드 커피점의 키오스크를 벤치마칭해서 파이참으로 코드를 작성해서 구현해 보는 것이다.
- 팀이 편성되고 각각의 임무분담을 하고, 개발 단계별로 시행하였다. 물론 처음보는 낯설은 팀원들과 함께 진행하기에는 소통이 우선이 되어야 했고, 팀장이 선출되면 팀장의 임무분담에 따라 일정계획을 세우고 코드를 작성해야 한다.
- 각자의 코딩실력이 전공자와 비전공자간의 차이로 인해 기한내 종합이 될 수 있을까 고민했지만 나름데로 고민도 해보고 찾아가면서 작성해 보았다.
- 예제 과제를 하면서 사용했던 파이썬 문법들을 빈 화면에서 작성해 보니 막히는 부분이 많았다. 그래서 검색도 하며 찾아보기를 여러번, 단순 코드를 작성했고, 조건문과 반복문을 사용했다.
- 팀장과 전공자 개발자는 팀원들 각각의 .py 파일들을 종합해서 패키지로 만들고 main.py 를 만들어 배포해 주었고, 처음에 이해도가 낮았던 비전공자들은 가르쳐 주는데로 따라가며 실행하며 종합된 코드들을 한줄 한줄 공부해 나가야 했다.
- 그리고 가상환경에서 작업해야 하고, 파일을 배포해서 다른PC에서 실행할 경우, 버젼에 맞는 환경설정과 경로설정 등 main.py에서의 문법 또한 중요함을 뒤늦게서야 알았다.
- 종합한 소스코드에서는 class라는 개념을 사용했는지 개념을 모두 이해할 수가 없었다. 그러나 실행되는 과정이 신기하기도 했고 모두가 고민하며 열심히 프로젝트를 하는 모습에서 나의 도전에 대한 용기를 얻을수 있었다. "도전은 계속된다."
'학습 로그 > Python3' 카테고리의 다른 글
| D+18 [Team Porject] KIOSK (0) | 2026.04.28 |
|---|---|
| D+18 [Team Project] "Class" 핵심개념 정리 (0) | 2026.04.28 |
| D+15 [Team Project] 팀프로젝트 준비 (0) | 2026.04.27 |
| D+14 [ PyCharm] Module, Package, Library 개념 (0) | 2026.04.21 |
| D+13 [Python] 함수 실습 (0) | 2026.04.17 |