A Real-Time Spelling Checker In Python
Sat Jul 22 2023 11:26:52 GMT+0000 (Coordinated Universal Time)
Saved by
@pythonHub
#python
#python-hub
#day21
# A GUI real time spell checker.
# for removing special characters
import re
# for GUI
from tkinter import scrolledtext
import tkinter as tk
from customtkinter import *
# for matching words
import nltk
from nltk.corpus import words
nltk.download("words")
class SpellingChecker(CTk):
def __init__(self):
super().__init__()
self.title("Spelling Checker")
self.geometry("600x500")
# Creating a widget to let user type
self.text_area = scrolledtext.ScrolledText(self,
wrap = tk.WORD,
width = 70,
height = 27,
font = ("Times New Roman",
15))
# To check the spellings whenever any key is released.
self.text_area.bind("<KeyRelease>", self.check)
self.text_area.grid(column = 0, pady = 10, padx = 10)
# keeping track of spaces.
self.old_spaces = 0
def check(self, event):
# getting whole content typed by user
content = self.text_area.get("1.0", tk.END)
# counting spaces
space_count = content.count(" ")
# checks spelling only if the space key was pressed.
if space_count != self.old_spaces: #checking if there are anymore spaces.
self.old_spaces = space_count #updating the new no. of spaces.
# removing any red highlights if there
for tag in self.text_area.tag_names():
self.text_area.tag_delete(tag)
# getting all the words
for word in content.split(" "):
# removinga any special characters if there
if re.sub(r"[^\w]", '', word.lower()) not in words.words():
# getting the starting position of incorrect word
position = content.find(word)
# marking wrong spelling red
self.text_area.tag_add(word, f"1.{position}", f"1.{position + len( word)}")
self.text_area.tag_config(word, foreground="red")
if __name__ == "__main__":
si = SpellingChecker()
si.mainloop()
content_copyCOPY
Comments