相关疑难解决方法(0)

在python中检测按键?

我在python中制作秒表类型程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),我不希望它像raw_input那样等待用户在继续执行之前的输入.任何人都知道如何在while循环中执行此操作?

另外,我想制作这个跨平台,但如果不可能,那么我的主要开发目标是linux

python keypress detect python-2.7

64
推荐指数
10
解决办法
24万
查看次数

键盘输入在Python中超时

你会如何提示用户输入一些信息但是在N秒后超时?

谷歌在http://mail.python.org/pipermail/python-list/2006-January/533215.html上指向了一个关于它的邮件线程,但似乎没有用.超时发生的语句,无论是sys.input.readline还是timer.sleep(),我总是得到:

<type'exception.TypeError'>:[raw_]输入最多需要1个参数,得2

以某种方式,除了没有抓住.

python timeout keyboard-input

53
推荐指数
8
解决办法
7万
查看次数

python中的关键监听器?

有没有办法在python中做一些关键的监听器而没有一个巨大的膨胀模块,比如pygame

一个例子是,当我按下a键时,它会打印到控制台

一键被按下了!

它还应该监听箭头键/空格键/ shift键.

python keylistener

29
推荐指数
5
解决办法
7万
查看次数

aysncio无法在Windows上读取stdin

我试图在Windows 7 64位和Python 3.4.3上异步读取stdin

我尝试了这个受到SO回答的启发:

import asyncio
import sys


def reader():
    print('Received:', sys.stdin.readline())


loop = asyncio.get_event_loop()
task = loop.add_reader(sys.stdin.fileno(), reader)
loop.run_forever()
loop.close()
Run Code Online (Sandbox Code Playgroud)

然而,它提出了一个OSError: [WInError 100381] An operation was attempted on something that is not a socket.

类似文件的对象是否stdin可以包含在类中以赋予它套接字的API?我已单独提出这个问题,但如果解决方案很简单,请在此处回答.

假设我无法包装类似文件的对象使其成为套接字,我尝试使用流作为这个要点的启发:

import asyncio
import sys


@asyncio.coroutine
def stdio(loop):
    reader = asyncio.StreamReader(loop=loop)
    reader_protocol = asyncio.StreamReaderProtocol(reader)
    yield from loop.connect_read_pipe(lambda: reader_protocol, sys.stdin)


@asyncio.coroutine
def async_input(loop):
    reader = yield from stdio(loop)
    line = yield from reader.readline()
    return …
Run Code Online (Sandbox Code Playgroud)

python windows stdin asynchronous python-3.x

13
推荐指数
1
解决办法
2789
查看次数

可取消的异步键盘输入

我正在尝试编写一个并发的Python程序,asyncio它也接受键盘输入。当我尝试关闭程序时出现问题。由于键盘输入最终是通过 完成的sys.stdin.readline,因此该函数仅在我按下 后返回ENTER,无论我是stop()事件循环还是cancel()函数的Future

有什么办法可以提供asyncio可以取消的键盘输入吗?

这是我的 MWE。它将接受键盘输入 1 秒,然后stop()

import asyncio
import sys

async def console_input_loop():
    while True:
        inp = await loop.run_in_executor(None, sys.stdin.readline)
        print(f"[{inp.strip()}]")

async def sleeper():
    await asyncio.sleep(1)
    print("stop")
    loop.stop()

loop = asyncio.get_event_loop()
loop.create_task(console_input_loop())
loop.create_task(sleeper())
loop.run_forever()
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

4
推荐指数
1
解决办法
1940
查看次数