데이터 분석가

파이썬 타이핑 테스트 프로젝트(Udemy Final Project 4) 본문

유데미 부트캠프 프로젝트(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가지로만 설정을 했는데 조금 더 많은 텍스트를 사용할 수 있고,

 

버튼의 크기를 조절하면 더 긴 문장으로 테스트 가능합니다 !

 

 

타자 검정

해당 코드를 정확하게 입력하여 실행하면 성공적으로 실행 가능합니다 !

 

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

 

 

Comments