繁体   English   中英

我该如何使print()函数不接收输入字段中的文本

[英]How can I make the print() function not take the text in the input field with it

我试图为我的python应用程序创建一个控制台,但遇到一个问题:使用print()函数打印某些内容时,输入字段中的文本也包括在内。 这纯粹是可视的,因为该程序仍然可以运行。

我尝试过在线搜索,但是现在我什至没有搜索什么,也没有运气。

这是我的代码。 在用户键入“ exit”之前,它将打印“ foo”:

import multiprocessing as mp
import os
import time

def f(q):
    while True:
        print(q)
        time.sleep(1)

if __name__=="__main__":
    p=mp.Process(target=f, args=("foo",))
    p.start()
    while True:
        comm=str(input())
        if comm=="exit":
            p.terminate()
            break

程序运行时,用户仍然可以键入,但是当程序打印某些内容时,它也将占用输入字段中的所有内容:

foo
foo
foo
foo
efoo
xfoo
itfoo

当按下“ enter”时,程序仍然正确注册输入并退出程序。

这是对代码的修改,仅在完成输入键入后(即直到您Enter )才输出foo

import multiprocessing as mp
from multiprocessing import Queue

def f(q, queue):
    while True:
        queue.get()
        print(q)

if __name__=="__main__":
    queue = Queue()
    p=mp.Process(target=f, args=("foo", queue))
    p.start()
    while True:
        comm=str(input())
        queue.put(None)
        if comm=="exit":
            p.terminate()
            break

如果终止该进程只是您希望用户能够执行的全部操作,则可以指示他们如果希望停止该操作,然后输入Ctrl + C,然后捕获随之而来的KeyboardInterrupt异常。

import multiprocessing as mp
import os
import time

def f(q):
    while True:
        print(q)
        time.sleep(1)

if __name__=="__main__":
    p=mp.Process(target=f, args=("foo",))
    print("Process starting. Use Ctrl+c anytime to stop it!")
    p.start()
    try:
        while True:
            input() # Trash command 
    except KeyboardInterrupt:
        print("Terminating process...")
        p.terminate()
        print("Process terminated...")

如果您想执行更复杂的命令,那么GUI将是您最好的方法(如John所提到的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM