Здравствуйте,
Я создал корректор орфографии для проекта, и в настоящее время я изо всех сил стараюсь заставить его работать в приложении реального времени (на лету)
Под этим я подразумеваю, что Я читаю ввод пользователя (в любом месте ОС Windows - не только в оболочке python) с библиотекой клавиатуры python, а когда пользователь вводит пробел, я проверяю правописание введенного слова.
Если это правильно, программа ничего не делает, но если это неправильно, программа удаляет неправильное слово и перезаписывает правильное.
Я реализовал последнюю функцию удаления и перезаписи с помощью pynput (нажмите и выпустить), но производительность далеко не хорошая.
Это последняя серьезная функциональность, которую я должен реализовать, поэтому любая помощь будет очень полезной.
Пример кода, который я использую, показан ниже.
import keyboard
from pynput.keyboard import Key,Controller
pynput_keyboard = Controller()
word_list = ['one', 'two', 'three'] # we suppose these are the correct words
correct_word = "CORRECT"
string = ""
while True:
event = keyboard.read_event()
if (event.event_type == keyboard.KEY_DOWN):
key_pressed = event.name
print("Key pressed is {}".format(key_pressed))
print("String is {}".format(string))
if (key_pressed == "space"):
if (string in word_list):
string = ""
pass
else :
for i in range(len(string) + 1):
# print("IN DELETION")
pynput_keyboard.press(Key.backspace)
pynput_keyboard.release(Key.backspace)
for i, char in enumerate(correct_word):
# print("in rewrite")
pynput_keyboard.press(char)
pynput_keyboard.release(char)
pynput_keyboard.press(' ')
pynput_keyboard.release(' ')
string=""
elif (key_pressed in "abcdefghijklmnopqrstuvwxyz"):
string = ''.join([string, str(key_pressed)])
Есть ли хорошие и эффективные способы сделать это?
Заранее спасибо.
ОБНОВЛЕНИЕ 1
Я а dded пример кода для лучшего понимания и скриншот, показывающий ошибку, которая возникает, если пользователь печатает очень быстро.
Основная проблема заключается в том, что программа задерживается при удалении и записи правильное слово и пользователь накладывает слова, написанные из программы.