如何在python中接受输入时实时更改某些单词的颜色

如何在python中接受输入时实时更改某些单词的颜色,python,multithreading,input,colors,Python,Multithreading,Input,Colors,我正在尝试编写一段代码,它将接受一个字符串作为输入,如果用户输入了一个特定的单词,它会将单词的颜色更改为红色,但所有这些都是实时的,我的意思是,当用户输入字符串时,而不是在按下Enter键之后。 我知道应该通过线程来完成,但问题是我不知道如何使线程实时工作。 有人能帮我吗?以下是从标准文本中一次读取一个字符的方法,摘自: 此代码的一种可能用法如下所示。读取字符并将其存储在变量中。然后将其打印到stdout,并通过colorama为其上色。这段代码只是一个例子,它仍然有一件事情不能正常工作:对“空

我正在尝试编写一段代码,它将接受一个字符串作为输入,如果用户输入了一个特定的单词,它会将单词的颜色更改为红色,但所有这些都是实时的,我的意思是,当用户输入字符串时,而不是在按下Enter键之后。 我知道应该通过线程来完成,但问题是我不知道如何使线程实时工作。
有人能帮我吗?

以下是从标准文本中一次读取一个字符的方法,摘自:

此代码的一种可能用法如下所示。读取字符并将其存储在变量中。然后将其打印到
stdout
,并通过
colorama
为其上色。这段代码只是一个例子,它仍然有一件事情不能正常工作:对“空格”的处理。但是如果你尝试一下,你会发现这些单词是实时着色的。需要额外的调整才能实时正确输出所有字母,包括空格。但我让你自己决定,这足以让你开始

import sys
from colorama import Fore

special_words = ['bannanas', 'eggs', 'ham']
my_text = ''
while True:
    c = getch()
    if ord(c) == 13:  # newline, stop
        break 
    my_text += c    

    sys.stdout.write("\r")  # move to the line beginning
    for word in my_text.split():
        if word in special_words:
            sys.stdout.write(Fore.RED + word + " ")
        else:
            sys.stdout.write(Fore.RESET + word + " ")
    sys.stdout.flush()

# reset the color when done
print(Fore.RESET)

你说改变颜色是什么意思?你是说在翻译室里吗?在命令行上?在某种GUI中?以下是如何一次读取一个字符:感谢您的解释。但我想在空壳里做。不是在GUI中。有可能在那里做吗?用简单的RWAI输入法来考虑它,有人能帮助我在输入中使用这个代码吗?我的意思是如何获得输入并突出显示单词,而不仅仅是用getch阅读字符?你读过我的答案吗?我为你写了90%的代码。我想我一直在用勺子喂东西。。
import sys
from colorama import Fore

special_words = ['bannanas', 'eggs', 'ham']
my_text = ''
while True:
    c = getch()
    if ord(c) == 13:  # newline, stop
        break 
    my_text += c    

    sys.stdout.write("\r")  # move to the line beginning
    for word in my_text.split():
        if word in special_words:
            sys.stdout.write(Fore.RED + word + " ")
        else:
            sys.stdout.write(Fore.RESET + word + " ")
    sys.stdout.flush()

# reset the color when done
print(Fore.RESET)