유데미 부트캠프 프로젝트(Final)
파이썬 타이핑 테스트 프로젝트(Udemy Final Project 4)
PlintAn
2023. 6. 25. 13:00
안녕하세요 !

이번 시간에는 타자 검정 테스트를 테스트해주는 GUI 프로그램을 만들어 보겠습니다 !
뭔가 익숙한 화면이 보이실거에요 !
이처럼 파이썬 코드로도 타자 검정을 할 수 있습니다 !

import tkinter as tk # GUI 라이브러리 import
import time # 시간 계산을 위한 라이브러리 import
import random # 무작위 선택을 위한 라이브러리 import
class TypingTestApp:
def __init__(self):
self.window = tk.Tk() # GUI 창 생성
self.sample_texts = [ # 샘플 텍스트 리스트
"The quick brown fox jumps over the lazy dog.",
"Pack my box with five dozen liquor jugs.",
"How vexingly quick daft zebras jump!",
"Bright vixens jump; dozy fowl quack.",
"Sphinx of black quartz, judge my vow."
]
self.sample_text = random.choice(self.sample_texts) # 샘플 텍스트 랜덤 선택
self.start_time = None
self.end_time = None
def run(self):
self._build_gui() # GUI 구축
self.window.mainloop() # GUI 실행
def _build_gui(self):
self.window.title("Typing Speed Test App") # 창 제목 설정
# 샘플 텍스트를 출력하는 라벨 생성
self.sample_label = tk.Label(self.window, text=self.sample_text)
self.sample_label.pack()
# 사용자 입력을 받는 텍스트 입력창 생성
self.entry = tk.Entry(self.window)
self.entry.pack()
# 시작 버튼 생성
self.start_button = tk.Button(self.window, text="Start", command=self.start)
self.start_button.pack()
# 종료 버튼 생성
self.end_button = tk.Button(self.window, text="End", command=self.end)
self.end_button.pack()
# 결과를 출력하는 라벨 생성
self.result_label = tk.Label(self.window, text="")
self.result_label.pack()
def start(self): # 시작 함수 정의
self.entry.delete(0, tk.END) # 입력창 초기화
self.sample_text = random.choice(self.sample_texts) # 새 샘플 텍스트 랜덤 선택
self.sample_label.config(text=self.sample_text) # 샘플 텍스트 라벨에 출력
self.start_time = time.time() # 시작 시간 기록
def end(self): # 종료 함수 정의
self.end_time = time.time() # 종료 시간 기록
typed_text = self.entry.get() # 사용자 입력 받기
# 입력이 샘플 텍스트와 일치하는지 확인
if typed_text == self.sample_text:
# 일치하면, 타이핑 속도 계산
elapsed_time = self.end_time - self.start_time
wpm_speed = len(self.sample_text.split()) / (elapsed_time / 60)
self.result_label.config(text=f"Your speed: {wpm_speed:.2f} words per minute.")
else:
# 일치하지 않으면, 오류 메시지 출력
self.result_label.config(text="Incorrect text. Try again.")
if __name__ == "__main__":
app = TypingTestApp() # 앱 객체 생성
app.run() # 앱 실행
다음과 같이 코드를 만들어 볼 수 있습니다 !
저는 샘플을 5가지로만 설정을 했는데 조금 더 많은 텍스트를 사용할 수 있고,
버튼의 크기를 조절하면 더 긴 문장으로 테스트 가능합니다 !
해당 코드를 정확하게 입력하여 실행하면 성공적으로 실행 가능합니다 !

긴 코드를 읽어주셔서 감사합니다 !
