python:输入时在屏幕上将其转换为大写



我的Python程序如何将用户的键盘输入转换为大写,就好像用户启用了CAPS LOCK一样?

我想模拟一个在没有任何小写字母的计算机上运行的程序(即一个比ASCII更有限的字符集)。

用户在键盘上交互式键入的文本输入应该实时强制为大写,就好像这是用户键入的一样。

命令行接口可以使用Python的标准cmd库,或者其他什么。转换可以通过自定义输入流或其他方式完成。

我对完全重新实现逐字符输入系统不感兴趣;例如,如果readline可用,我想继续使用它。我只想翻译结果流,因为它在视觉上出现,并进入程序。

有一个Unix终端属性OLCUC,听起来很有前景;但在单一Unix规范中,它被标记为LEGACY,并且它的实现是不可靠的(会导致一些正常控制序列或Unicode文本的垃圾)。因此,这不是一个解决方案。

特别重要的是,界面应该看起来与实际输入大写文本的人没有明显区别;显示器应该只将用户的输入显示为程序将处理的大写文本。

使用getch:http://code.activestate.com/recipes/134892/

__call__函数的stdin.read后面附加以下内容:

try:
    tty.setraw(sys.stdin.fileno())
    ch = sys.stdin.read(1).upper()
    sys.stdout.write(ch)
    ...

您可以只执行一个条件while(例如,直到用户按下回车键)来逐个获取字符,并将其作为大写字母进行回显:

getch = _Getch()
text = ''
while True:
    char = getch()
    if ord(char) == 13:  # ascii carriage return
        break
    else:
        text += char
print text

相关内容

  • 没有找到相关文章

最新更新