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

2023-12-24

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

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

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

命令行界面可以使用Python的标准cmd https://docs.python.org/3/library/cmd.html图书馆,或者其他东西。转换可以通过自定义输入流或其他方式完成。

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

有一个 Unix 终端属性,OLCUC,这听起来很有希望;但它是在 Single Unix 规范中标记为 LEGACY http://pubs.opengroup.org/onlinepubs/7908799/xbd/termios.html,并且其实现不可靠(导致某些正常控制序列或 Unicode 文本产生垃圾)。所以这不是一个解决方案。

尤其重要的是,界面应该与实际输入大写文本的人在视觉上没有区别;显示屏应该只将用户的输入显示为程序将处理的大写文本。


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

追加到之后stdin.read in __call__执行以下操作:

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

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

getch = _Getch()
text = ''

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

print text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python:在屏幕上输入时将输入转换为大写 的相关文章

随机推荐

  • 在文本框中包含按钮

    我想补充一点Button 这会删除中的所有文本TextBox 是否可以将此 删除 按钮放入文本框中 就像在iPhone 文本框 我希望在你的帮助后它看起来像这样 我用控制模板玩了一些东西 但没有得到想要的结果 解决此问题的一种方法可能是使用
  • 如何管理多个 grails/groovy 版本的开发?

    我有一个使用 groovy 1 7 5 和 grails 1 3 4 的项目 但我的新项目尚未启动 它将使用最新版本的 groovy 1 8 6 和 grails 2 0 4 我将在这两个项目中工作 那么如何在Windows环境下管理不同版
  • 无法将带有 ACL 公共读取的文件上传到 Digital Ocean 空间

    我正在尝试从浏览器将图像上传到数字海洋空间 这些图像应该是公开的 我能够成功上传图像 然而 尽管 ACL 设置为public read 上传的文件始终是私有的 我知道它们是私有的 因为 a 仪表板显示权限是 私有 b 因为公共 URL 不起
  • 扩展 collections.namedtuple 是否有效?

    我想用类似的东西collections namedtuple 它很好地强制了不变性并促进了简单的值类 但它不允许子类化 例如我想做类似下面的事情添加额外的只读属性 https stackoverflow com questions 2193
  • 如何使用正则表达式匹配单个空格总数而不仅仅是单个空格

    这是我目前拥有的 它将匹配字母数字字符和空格 a z0 9 s 我想做的是确保只有在不超过一 1 个空格的情况下才会匹配 上面将匹配 这是一个测试 但我只希望它在输入是 This isatest 或 T hisisatest 时匹配 一旦空
  • 根据轮廓分割 pdf

    我想使用 pyPdf 根据大纲分割 pdf 文件 其中大纲中的每个目标都指 pdf 中的不同页面 示例大纲 main gt points to page 1 sect1 gt points to page 1 sect2 gt points
  • Google 云端硬盘上传进度条

    有没有办法为上传到 Google Drive 创建进度条 我正在使用适用于 Javascript 的 Google Drive SDK 我在他们的文档中根本找不到任何内容 真的很感谢它的一点帮助 我查阅了很多代码 几乎是我这几周在谷歌上找到
  • Spark Streaming窗口操作

    以下是获取窗口大小为 30 秒 幻灯片大小为 10 秒的字数统计的简单代码 import org apache spark SparkConf import org apache spark streaming import org apa
  • 使用 jQuery 将标头(

    -

    标签)解析为有序列表?
    我正在根据标题结构以有序列表的形式制作目录 例如 h1 lorem h1 h2 ipsum h2 h2 dolor h2 h3 sit h3 h2 amet h2 becomes lorem ipsum dolor sit amet 这就是

  • 致命错误:未找到 yii 框架类“CDbTestCase”

    我正在关注 使用 yii 1 1 和 php5 进行敏捷 Web 应用程序开发 一书 并且正在使用固定装置进行测试部分 我遵循了他们的代码 但我无法访问该装置 在使用 PHPunit 配置固定装置后 我正在第 6 章运行单元测试 它返回给我
  • 如何彻底卸载kubernetes

    我使用安装了 kubernetes 集群kubeadm按照此guide https kubernetes io docs setup independent create cluster kubeadm 一段时间后 我决定重新安装 K8s
  • Fluent nHibernate Join 正在插入连接表

    我正在尝试使用 join 从另一个没有映射的表中提取单个属性 我的问题是 当我创建映射实体的新实例并保存它时 我收到有关尝试插入到未映射表中的错误 它试图将 null 插入到非空列中 我认为使用 ReadOnly 会阻止 nhibernat
  • 如果用户以编程方式点击 UITextfield,如何显示 UIDatePicker

    我想仅在用户单击 UITextField 时显示 UIDatePicker 当选择日期时 它应该显示在同一个 UITextField 中 我想以编程方式实现 UIDatePicker 我知道如何以编程方式编写 UITextField 的代码
  • R 对连续重复的奇数列表求和并删除除第一个列表之外的所有列表

    我被问题困住了 如何加入连续重复的奇数列表并删除除第一个列表之外的所有列表 我已经了解如何对连续的重复行求和并删除除第一行之外的所有行 链接 R 对连续重复的奇数行求和并删除除第一个之外的所有行 https stackoverflow co
  • Minikube 挂在“启动 VM”步骤上

    再次嗨 我心爱的社区 我的 v0 33 1 minikube 挂在 正在启动虚拟机 步骤上 我使用的是 Windows 10 和 HyperV 虚拟机 我正在使用以下命令运行我的集群 minikube start kubernetes ve
  • 在 MAC 中创建进程(包括守护进程和应用程序)时收到通知

    我试图在 MAC 中创建新进程时检测 收到通知 最简单的方法是轮询所有进程并查看是否已启动新进程 但这太耗时了 我想知道每当使用 forked 和 execve 启动新进程时是否可以以某种方式收到一些通知 这是我已经发现的 关于如何在 MA
  • Entity Framework 4 是否支持像 NHibernate 这样的 id 值生成器?

    Entity Framework 4 是否支持像 NHibernate 这样的 id 值生成器 NHibernate 有生成器类来帮助解决这个问题 EF4 支持后端服务器支持的任何内容 SQL Server 中具有默认值 newid new
  • Android 相对布局 父级右对齐

    我有以下布局
  • Blogger 上的每个帖子上都会出现相同的 Facebook 评论

    我在 Blogger 上有一个博客 并且刚刚安装了新的 Facebook 评论插件 代码如下所示 div div
  • python:在屏幕上输入时将输入转换为大写

    我的 Python 程序如何将用户的键盘输入转换为大写 就像用户启用了 CAPS LOCK 一样 我想模拟一个在没有任何小写字母的计算机上运行的程序 即比 ASCII 更受限制的字符集 用户在键盘上交互式键入的文本输入应该实时强制为大写 就