【问题标题】:Print character to a certain point on console in Python?在 Python 的控制台上将字符打印到某个点?
【发布时间】:2014-04-12 17:33:17
【问题描述】:

有没有办法使用 Python (3) 在控制台上将字符打印到某个点? 这是我想要实现的理想示例:

def print_char(x, y, char):
    # Move console cursor to 'x', 'y'
    # Set character under cursor to 'char'

我知道在其他一些语言中也是可能的,那么 Python 呢?我不介意是否必须使用外部库。

我使用的是 Windows 7。

【问题讨论】:

  • 你可能最好使用urwid之类的东西。
  • 什么操作系统?对于 linux,使用 curses(在标准库中)。
  • @sweeneyrod Windows 7 :/
  • 在这种情况下,docs 建议使用 unicurses 或控制台模块作为替代方案。

标签: python python-3.x printing console


【解决方案1】:

如果您使用的是 UNIX(如果不是,请参见下文),请使用 curses:

import curses

stdscr = curses.initscr()

def print_char(x, y, char):
    stdscr.addch(y, x, char)

只有 UNIX 平台的 Python 包包含 curses 模块。但是,如果这不适用于您,请不要担心,因为名为 UniCurses 的移植版本适用于 Windows 和 Mac OS。

【讨论】:

  • 忘了说,我在 Windows 7 上:/
  • @MarkusMeskanen 然后使用我在回答中提到的移植版本。
  • 是的,一开始没看到,谢谢,我先试试看再采纳! :P
【解决方案2】:

如果您的控制台/终端支持 ANSI 转义字符,那么这是一个很好的非模块解决方案。

def print_char(x, y, char):
    print("\033["+str(y)+";"+str(x)+"H"+char)

您可能需要稍微平移坐标才能使其位于正确的位置,但它确实有效。您可以打印任意长度的字符串来代替单个字符。此外,如果您想在清除屏幕之间重复多次执行该功能,您可能需要这样做。

def print_char(x, y, char):
    compstring += "\033["+str(y)+";"+str(x)+"H"+char

然后在所有 print_char 都执行后打印 compstring。这将减少清除屏幕时的闪烁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多