是否可以在 IDLE 中的某个屏幕位置打印字符串?

新手上路,请多包涵

编辑: 我刚刚发现使用标准库“curses”可以获得类似的行为。有一些关于它如何工作的演示,例如在 YouTube 上: http ://www.youtube.com/watch?v=Bj-H9uPEa5U

我知道这是一个奇怪而愚蠢的问题,但我很好奇,因为我对 python 及其工作原理知之甚少。从终端或当您使用 IDLE 时,有没有办法在屏幕的某个位置打印字符串?

我将尝试更好地解释这一点:您还记得以前用 Basic 编写小程序的日子吗,也许是在 Commodore 64、Apple II 或 ZX Spectrum 上?在那些日子里,如果你想在某个位置打印一个字符串,你通常会这样写:

10 定位 30、40:打印“hello world”

我只是想知道是否有任何方法可以告诉 python 在特定位置打印字符串,以及是否有方法可以知道 IDLE 窗口内实际可以显示多少列和多少行。

我还制作了一个模型图来解释这个概念。

模型屏幕来解释我的意思

原文由 Cesco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 363
2 个回答

我不知道这是否适用于 IDLE,但它适用于任何普通终端:

 import sys
def print_there(x, y, text):
     sys.stdout.write("\x1b7\x1b[%d;%df%s\x1b8" % (x, y, text))
     sys.stdout.flush()

这使用 Ansi-Escape 序列

原文由 rumpel 发布,翻译遵循 CC BY-SA 4.0 许可协议

为避免 @user3431399 提出的问题,您首先需要 使 win32 控制台识别 ANSI/VT100 转义序列。我在 Windows 10 终端上遇到了与 @user3431399 相同的问题,我按照 @Daniel De Léon 推荐的解决方案 解决了这个问题。也就是说,我在 Windows 提示符下(cmd 命令)以管理员身份登录。然后我复制、粘贴并运行命令。

REG ADD HKCU\CONSOLE /f /v VirtualTerminalLevel /t REG_DWORD /d 1

原文由 pmntang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题