Python:使用curses库打印ASCII文本文件

问题描述 投票:0回答:1

我正在尝试在python中打印包含ASCII艺术的文本文件。

我知道最简单的方法就是做这样的事情

with open(image, 'r') as f:
for line in f:
    print(line.rstrip())

但是我想使用curses库进行打印,以便可以在图像中显示其他文本。到目前为止,这是我要提出的。

lines=[]
with open('image.txt',"r",encoding="utf8") as f:
        lines.append(f.readlines())

for a in lines:
    char = str(("".join(a)))
    stdscr.addstr(y, x, char)

此代码完成了90%的工作,但我无法使图像向右移动。我可以通过更改stdscr.addstr(y,x,char)中的y来选择图像开始的哪一行,但是更改x对其开始的列没有影响。

是否有解决此问题的方法?谢谢。

python printing ascii curses
1个回答
1
投票
[当您调用lines.append()时,您要获取f.readlines()返回的整个列表,并将其作为单个项添加到lines。然后,for a in lines仅循环一次,将a(整个文件)的元素重新组合在一起,然后将其传递给addstr(),后者将解释嵌入式换行,将第一行之后的每一行重置为第一列。

而不是lines.append(),您想要lines.extend(),或更可能是lines = f.readlines()。然后,您可以省去连接,尽管您可能应该删除换行符。例如:

with open('image.txt',"r",encoding="utf8") as f: lines = f.readlines() for a in lines: # set x and y here stdscr.addstr(y, x, a.rstrip())

© www.soinside.com 2019 - 2024. All rights reserved.