Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在控制台中动态更改行_Python - Fatal编程技术网

Python 在控制台中动态更改行

Python 在控制台中动态更改行,python,Python,我目前正在构建一个小的“聊天机器人”程序,其概念是它应该能够在任何时候异步处理信息和输出。此外,用户可以随时输入 我已经记下了基本的力学原理,但是我很难让它在控制台中看起来很好。我希望它的工作方式如下: 每次bot输出时,它都应该出现在新的控制台行上 用户文本输入行应该始终位于控制台的最底部,并且(当然)您应该能够看到您正在键入的内容 当用户发送输入时,输入的文本应在控制台中显示为新行,并将创建一个新的输入行 这是我目前正在使用的代码,但它有很多缺陷: def writeToConsole(li

我目前正在构建一个小的“聊天机器人”程序,其概念是它应该能够在任何时候异步处理信息和输出。此外,用户可以随时输入

我已经记下了基本的力学原理,但是我很难让它在控制台中看起来很好。我希望它的工作方式如下:

  • 每次bot输出时,它都应该出现在新的控制台行上
  • 用户文本输入行应该始终位于控制台的最底部,并且(当然)您应该能够看到您正在键入的内容
  • 当用户发送输入时,输入的文本应在控制台中显示为新行,并将创建一个新的输入行
  • 这是我目前正在使用的代码,但它有很多缺陷:

    def writeToConsole(line,static=False):
      if static:
          sys.stdout.write("\r"+line)
      else:
          print("\r"+line)
    
    当“static”为False时,我希望写一行新行。如果是真的,我希望输入行读作“line”。实际上,所有的static=False行都是在static=True行上写的,但是超过新行长度的字符仍然存在


    如果您能帮助我实现我想要的效果,我们将不胜感激。

    听起来您想要的是将文本控制台划分为不同的区域,并对每个区域的I/O进行不同的处理。在Linux上,您可以使用以下内容。在Windows上,您必须使用或类似的工具。你当然可以不用它来编写你的程序,方法是缓冲终端的所有行,以你想要的方式更新缓冲区,每次都重写屏幕,但是花时间学习诅咒API会让你专注于你的应用程序逻辑,而不是控制台。@robert_x44是的,我在考虑重新绘制整个控制台,但这是我不想求助的功能,因为它只会阻碍进步。我听说过诅咒,但不确定它们的确切功能是什么……谢谢你,我来看看。听起来你想要的是将文本控制台划分为不同的区域,并对每个区域的I/O进行不同的处理。在Linux上,您可以使用以下内容。在Windows上,您必须使用或类似的工具。你当然可以不用它来编写你的程序,方法是缓冲终端的所有行,以你想要的方式更新缓冲区,每次都重写屏幕,但是花时间学习诅咒API会让你专注于你的应用程序逻辑,而不是控制台。@robert_x44是的,我在考虑重新绘制整个控制台,但这是我不想求助的功能,因为它只会阻碍进步。我听说过诅咒,但不确定它们的确切功能是什么…谢谢你,我来看看。