【问题标题】:How can I cancel an input request如何取消输入请求
【发布时间】:2020-12-08 00:53:22
【问题描述】:

我正在努力在我的程序中添加某种用户控制台的支持,他们可以在 python 文件中以var = input("Input here: ") 的形式键入命令,但是似乎在要求输入时您无法打印想法,我想要它将某些更新打印到控制台...

这可能吗?

编辑:我发现足以将问题缩小到:

如何取消输入请求

【问题讨论】:

  • 您能否进一步说明您希望能够执行的操作?您提供的代码将返回一个带有用户输入的字符串。如果您希望用户能够根据他们的输入运行命令,您可以在之后运行eval(var)

标签: python printing console


【解决方案1】:

在单个线程中等待用户输入时,您不能运行任何代码。您可能想查看threading module 并创建一个等待用户输入的线程和一个打印项目的线程。 This reddit thread 可能会有所帮助。

import threading
import Queue

myQueue = Queue.Queue()

def getUserInput():
    return input("Input here: ")

inputThread = threading.Thread(target=lambda: myQueue.put(getUserInput()))
inputThread.start()

while inputThread.is_alive():
    # Your code here
inputThread.join()
var = myQueue.get()

【讨论】:

  • 我会试试这个,如果它有效,会告诉你
  • 请问,队列模块的意义何在?我对线程比较熟悉,但从未听说过
  • 当你在多线程时,你需要警惕两个线程同时访问或写入一个变量。 queue 模块旨在提供一种在线程之间通信变量的安全方式。我在这里使用它是因为它是我最熟悉的关于在线程之间移动变量的方法。
  • 是的,常量文本正在写入输入
  • 等待有没有办法取消输入请求?
猜你喜欢
  • 2015-09-12
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多