Python colorama无法与input一起使用?

7

今天终于让colorama工作了,它在打印字符串时表现出色,但当我尝试将colorama与输入一起使用时,我遇到了似乎每个人都会遇到的常见错误。

这是我的代码:

launch = input(Fore.GREEN + "Launch attack?(Y/N): ")

输出截图:

在此输入图片描述


你使用的操作系统和Python实现是什么? - shuttle87
你记得先调用 init 吗? - Kevin
回复自己的评论:不,我在3.X中也遇到了这个问题,即使我执行init()。但在2.7中运行良好。 - Kevin
使用 Windows 10 64 位 Python 3.5.0。 - user3552616
是的,我已经调用了空的init函数。 - user3552616
这里没有有用的答案,我在 https://github.com/tartley/colorama/issues/103 提交了一个错误报告。 - Zitrax
4个回答

6
我也曾遇到过同样的问题(Python 3.5.4版本),为了避免其他人看到这里时感到不太明显,你可以在只有输入调用的地方使用print / input调用的组合来解决问题:
print(Fore.GREEN + "Launch attack?(Y/N): ", end='')
launch = input()

这应该会产生与您问题中完全相同的输出,没有额外的空行,并且代码着色工作正常,无需导入任何其他内容。
(小?)缺点是,您将最终得到两行代码,而之前只有一行。

4

在我的系统上,只要添加颜色,input()就可以正常工作。

import sphinx.quickstart

转到你的模块。

这是完整的代码。

from colorama import Fore
import colorama
import sphinx.quickstart
colorama.init()
launch = input(Fore.GREEN + "Launch attack? (Y/N): ")

(这带来了两个问题:)
  1. 为什么一开始它不能工作?
  2. 实际原因是什么? - 有人可能想要深入研究sphinx源代码。

注意:如果您通过Git Bash运行python,可以使用winpty设置convert

colorama.init(convert=True)

否则,您将无法在当前版本中获得颜色。

我希望这个问题能够解决。我真的很想现在就用它来写脚本。导入sphinx.quickstart是可以的,但它会使我的编译后的exe Python脚本增加额外的18兆字节。 - probat

1
为了解决这个问题,在代码开头添加
import os

os.system('cls')

这将清除屏幕并消除所有阻塞输入中的colorama的外部因素。 这个方法100%有效,您只需要在程序开始时执行一次[或在第一次使用colorama与输入之前],然后可以任意创造性地使用colorama。 我希望这对于尝试让他们的代码更加丰富多彩的有创造性的头脑有所帮助。

0

在init()中确保'autoreset'已设置

init(autoreset=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接