ruchita ya le tera program mujhe tho nahi mila error tu bhi try karle. niche hai code
import tkinter as tk
from tkinter import messagebox
import time
import random
class TypingSpeedTest:
def init(self, root):
self.root = root
self.root.title("Typing Speed Test")
self.root.geometry("800x600")
self.root.configure(bg="#f0f0f0")
# Sample sentences for the typing test
self.sentences = [
"The quick brown fox jumps over the lazy dog.",
"A journey of a thousand miles begins with a single step.",
"To be or not to be, that is the question.",
"All that glitters is not gold.",
"Practice makes perfect."
]
self.test_sentence = random.choice(self.sentences)
self.start_time = None
self.time_limit = 60 # 1-minute typing test
# Header
self.header_frame = tk.Frame(root, bg="#4CAF50")
self.header_frame.pack(fill="x")
self.header_label = tk.Label(self.header_frame, text="Typing Speed Test", font=("Helvetica", 24, "bold"), bg="#4CAF50", fg="white")
self.header_label.pack(pady=10)
# Instruction Label
self.instruction_label = tk.Label(root, text="Type the following sentence as quickly and accurately as you can:", font=("Helvetica", 14), bg="#f0f0f0")
self.instruction_label.pack(pady=20)
# Sentence Label
self.sentence_frame = tk.Frame(root, bg="#ffffff", padx=10, pady=10, relief="groove", bd=2)
self.sentence_frame.pack(pady=10)
self.sentence_label = tk.Label(self.sentence_frame, text=self.test_sentence, font=("Helvetica", 14), bg="#ffffff", wraplength=600, justify="center")
self.sentence_label.pack()
# Timer Label
self.timer_label = tk.Label(root, text=f"Time Remaining: {self.time_limit} seconds", font=("Helvetica", 14), bg="#f0f0f0", fg="#FF5733")
self.timer_label.pack(pady=10)
# Textbox
self.textbox = tk.Text(root, height=3, font=("Helvetica", 14), wrap="word", padx=10, pady=10, relief="groove", bd=2)
self.textbox.pack(pady=20, padx=20)
# Submit Button
self.submit_button = tk.Button(root, text="Submit", command=self.calculate_speed, font=("Helvetica", 14), bg="#4CAF50", fg="white", activebackground="#45a049")
self.submit_button.pack(pady=20)
# Result Label
self.result_label = tk.Label(root, text="", font=("Helvetica", 14), bg="#f0f0f0")
self.result_label.pack(pady=10)
# Start timing when user starts typing
self.textbox.bind("<FocusIn>", self.start_timer)
self.textbox.bind("<KeyPress>", self.update_timer)
def start_timer(self, event):
if self.start_time is None:
self.start_time = time.time()
self.update_timer()
def update_timer(self, event=None):
if self.start_time is not None:
elapsed_time = time.time() - self.start_time
remaining_time = max(0, self.time_limit - int(elapsed_time))
self.timer_label.config(text=f"Time Remaining: {remaining_time} seconds")
if remaining_time > 0:
self.root.after(1000, self.update_timer)
else:
self.calculate_speed()
def calculate_speed(self):
if self.start_time is None:
return
end_time = time.time()
elapsed_time = end_time - self.start_time
elapsed_time_minutes = elapsed_time / 60
user_input = self.textbox.get("1.0", tk.END).strip()
word_count = len(self.test_sentence.split())
typing_speed = word_count / elapsed_time_minutes
correct_chars = sum(1 for a, b in zip(self.test_sentence, user_input) if a == b)
accuracy = (correct_chars / len(self.test_sentence)) * 100
extra_chars = len(user_input) - len(self.test_sentence)
accuracy_penalty = max(0, extra_chars * 0.5)
final_accuracy = max(0, accuracy - accuracy_penalty)
result_text = (
f"Time taken: {elapsed_time:.2f} seconds\n"
f"Your typing speed is: {typing_speed:.2f} WPM\n"
f"Accuracy: {final_accuracy:.2f}%\n"
f"Original Accuracy: {accuracy:.2f}%\n"
f"Accuracy Penalty for Extra Characters: {accuracy_penalty:.2f}%"
)
self.result_label.config(text=result_text)
# Reset the timer for the next test
self.start_time = None
self.textbox.delete("1.0", tk.END)
self.test_sentence = random.choice(self.sentences)
self.sentence_label.config(text=self.test_sentence)
self.timer_label.config(text=f"Time Remaining: {self.time_limit} seconds")
# Show a message box with the result
messagebox.showinfo("Result", result_text)
if name == "main":
root = tk.Tk()
app = TypingSpeedTest(root)
root.mainloop()
0 Comments