windows机器上python的无缓冲字符输入

2023-12-01

我正在尝试做什么

我正在尝试设计一个具有单圈计时功能的秒表。当您按“L”时,一圈将完成,当您按“S”时,所有圈将完成,并按顺序显示计时。

在 C++ 中,我可以使用 conio.h 中的函数 _getch() 来完成此操作,这将非常容易。我想用 python 编写这个程序,因为它会更容易,而且 C++ 中的时间处理也被证明很困难。

我仍然在此链接上编写了一个程序(用于立方体计时):魔方计时器

Problem

没有像 _getch() 这样的函数。这是一个问题,因为在一圈结束时,您无法按下某个键和一个回车键,因为这会花费时间并且让用户感到恼火。

我读过的东西

我读到了有关curses 库的内容,但可惜它没有Windows 端口。

我尝试了一个应该可以根据网站运行的程序。这是来自链接的

链接到 getch 食谱

但这没有用。

我尝试过的:

  1. msvcrt.getch()



    >>> import msvcrt
    >>> msvcrt.getch()
    '\xff'

  

我认为 FF 相当于 255 的十六进制。

我不明白为什么会发生这种情况。

  1. readch() 正如@martineau 中所建议的

    导入msvcrt

    def readch(echo=True): “在 Windows 上获取单个字符。” while msvcrt.kbhit(): # 清除键盘缓冲区 msvcrt.getch() ch = msvcrt.getch() while ch in '\x00\xe0': # 箭头或功能键前缀? msvcrt.getch() ch = msvcrt.getch() # 第二次调用返回实际的关键代码 如果回显: msvcrt.putch(ch) 返回 ch.decode()

    a = []

    对于范围(10)内的 i: a.追加(readch())

我得到的错误:

>>> 

Traceback (most recent call last):
  File "C:/Python25/1.py", line 30, in <module>
    a.append(readch())
  File "C:/Python25/1.py", line 25, in readch
    return ch.decode()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

我需要什么帮助

一个类似于 _getch() 的函数或在 Windows 机器上运行的等效函数。

机器规格

Python 空闲 2.5.4 或 2.6 或 2.7

Windows XP SP3


这是我用过的,似乎可以在 Windows 控制台中运行。它与 ActiveState 配方有些相似,只是它仅适用于 Windows。它基于this msdn的文档_getwch().

#### windows only ####
import msvcrt

def readch(echo=True):
    "Get a single character on Windows."
    while msvcrt.kbhit():  # clear out keyboard buffer
        msvcrt.getwch()
    ch = msvcrt.getwch()
    if ch in u'\x00\xe0':  # arrow or function key prefix?
        ch = msvcrt.getwch()  # second call returns the actual key code
    if echo:
        msvcrt.putwch(ch)
    return ch

def pause(prompt='Press any key to continue . . .'):
    if prompt:
        print prompt,
    readch(echo=False)

(已更新以处理 Unicode)。

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

windows机器上python的无缓冲字符输入 的相关文章

随机推荐

  • dompdf不显示PHP文件生成的图像

    我正在使用 dompdf 生成 PDF 文件 在该文件中 我包含了一个由 PHP 使用以下命令即时生成的图像 img src image php 当我查看该页面时 我可以看到一条错误消息 未找到图像 该错误链接到据称未找到的图像 当您单击该
  • 如何隐藏浏览器中的状态栏?

    我有一个简单的问题 如何隐藏浏览器状态栏中的链接 我尝试过这个 a href http www sell com referrer 225 Click here a 摘自教程 但这不起作用 如果有人能帮助我 我会很高兴 你不能 至少在当前的
  • asio隐式链和数据同步

    当我阅读asio源代码时 我很好奇asio是如何在线程之间同步数据的 甚至是隐式链的制作 这些是 asio 中的代码 io service 运行 mutex scoped lock lock mutex std size t n 0 for
  • Swift 函数调用列表参数类型不正确

    我定义了下面的 swift 类 并尝试从视图控制器调用 sfAuthenticateUser 但是 Xcode 智能感知列出了除我定义的类型之外的错误参数类型 错误 无法将类型 String 的值转换为预期参数类型 APISFAuthent
  • 内联 Javascript(在 HTML 中)如何工作?

    我知道这是不好的做法 如果可能的话 不要编写这样的代码 当然 我们总是会发现自己处于这样的情况 巧妙的内联 Javascript 片段可以快速解决问题 我正在追求这个查询 以便充分理解编写这样的内容时会发生什么 以及潜在的陷阱 a href
  • 将全局设置应用于 pyplot 中的所有子图

    这与this and this问题 我有一系列具有非常相似设置的图形和子图 但是 我似乎无法找到同时设置它们的方法 这是一个简化版本 我通常使用更多实例 fspec plt figure 1 spC fspec add subplot 21
  • “AMOUNT1”在使用它的上下文中无效

    我在 DB2 中执行以下查询 select SUM orders totalproduct orders TOTALTAX orders totalshipping orders totaladjustment as amount1 fro
  • jquery - 所需的表单验证规则取决于

    有人可以给我介绍一下如何使用validate rules required depends 我有一些部分代码 但不确定它是如何工作的 form2 validate rules firstname required depends funct
  • ASP.NET MVC 应用程序变量?

    ASP NET 中有应用程序变量吗 我想为所有用户存储一个对象 该对象应该每 5 分钟独立更新一次 但所有用户都应该始终看到它的最新版本 有什么建议 C 吗 您可以在 ASP NET 中存储应用程序范围的数据Cache 使用以下命令将您的项
  • 用于两行和多列的 Xml 到表转换的 XSL

    我一直在尝试解决上周提出的问题的变体 用于 Xml 到表转换的 XSL 我必须将每个部分的第一个和最后一个页码输出到一个有两行的表中 我对如何将两行表与 Muenchian 分组方法集成感到困惑 XSLT 1 0 解决方案正是我所需要的 我
  • 在调查与 GPO 部署相关的错误时,如何获取 Windows Installer 的更详细/详细日志?

    我正在学习如何通过 GPO 方法从 Windows 2012 Server 将 MSI 应用程序部署到 Windows 10 客户端 在 Windows Server 中 我使用以下设置创建了一个新的 GPO 包 但是 它在Windows
  • Math.cos、sin 和 tan 在 Java 中返回不准确的值

    我正在用 Java 开发一个带有 GUI 的计算器 项目已完成 但三角函数无法正常工作 这是 cos 函数的方法 public void actionPerformed ActionEvent evt input Double valueO
  • 将变量列表单独传递给 clojure 函数

    我一直在使用 clojure 并决定创建一个结合了 mapcat 和 list 的高阶函数来模拟这种行为 Clojure gt mapcat list 1 2 3 4 5 6 7 8 1 5 2 6 3 7 4 8 我的第一次尝试是定义 m
  • jQuery 插件 .fn 问题

    我在创建 jquery 插件时似乎遇到了一些问题 我正在 firebug 控制台中测试一个简单的插件 但该功能并未按我的预期定义 这是我正在使用的代码模式 jQuery fn test function console log runs 我
  • 将地点 ID 位置传递到 Google 地图 API 中的目的地

    我试图弄清楚如何将 Google Places 位置的几何位置动态传递到路线服务请求目的地 如果我使用 service getDetails placeId ChIJy YmBMEMIocRZF8r5wPFMYU function plac
  • 如何在flume中同时使用regex_extractor选择器和多路复用拦截器?

    我正在测试 Flume 将数据加载到 hHase 中 并考虑使用 Flume 的选择器和拦截器进行并行数据加载 因为源和接收器之间的速度差距 所以 我想要用 Flume 做的是 使用拦截器 regexp extract 类型创建事件标头 使
  • 在 Angular 5 中重用 html 内容

    在开始这个问题之前 我先澄清一下我是新人 所以请耐心等待 我会尽力解释自己 在引导程序中 我可以通过以下方式生成模态 modal component html div class modal fade div class modal dia
  • 使用 Jackson 将 JPA 实体序列化为 JSON

    关于 Jackson JPA 组合的问题 如果当前应用程序中有大约 20 个实体 并且我在 POM 中添加了 Jackson 依赖项 这是否意味着默认情况下所有实体都准备好转换为JSON目的 我看到一个示例项目似乎只有类注释为 JsonIg
  • CSS 媒体查询打印纸张尺寸

    世界各地的纸形状都不一样 我有一份文档 希望以 A4 纸和 US Letter 纸进行不同的打印 某些元素应该隐藏或显示 明显的建议是使用媒体查询 如下所示 media print and max height 280mm a4 only
  • windows机器上python的无缓冲字符输入

    我正在尝试做什么 我正在尝试设计一个具有单圈计时功能的秒表 当您按 L 时 一圈将完成 当您按 S 时 所有圈将完成 并按顺序显示计时 在 C 中 我可以使用 conio h 中的函数 getch 来完成此操作 这将非常容易 我想用 pyt