是否可以在不使用python的情况下在同一位置打印“ for循环”表的位置?

如何解决是否可以在不使用python的情况下在同一位置打印“ for循环”表的位置?

这是一个代码示例,可以在控制台的同一光标位置上打印一些数字,而无需将字符从原处移动。

代码示例

from sys import stdout
from time import sleep
for i in range(1,20):
    stdout.write("\r%d" % i)
    stdout.flush()
    sleep(1)
stdout.write("\n") # move the cursor to the next line

问题

如果我们需要在同一位置上一遍又一遍地打印整个表格,而又不创建新的表格行,使其完全变成static,那么这种方法是否可行?


我的目的是使在底部提供的代码能够与上面共享的code example相同。

在控制台上打印表格时,表格的标题不得更改,但传递的值(行元素)必须在相同的单元格位置动态更改,从而迭代传递的值。

下面是我想要的代码

from prettytable import prettytable
from sys import stdout
from time import sleep

t = prettytable(['Name','Age'])
lis = [['Alice',25],['Alice',20],['Man',20]]
for x in lis:
    t.add_row(x)
    print(t,end='\r')
    t.clear_rows()
    sleep(1)
stdout.write("\n")

在这里,迭代print(t,end='\r')每次都将表打印到新行上。

我希望看到为第一次迭代(for循环)打印的表,完全被下一次迭代的表替换,依此类推。

解决方法

curseXcelcurses可以实现此目的。请检查curseXcel可用的所有不同方法。

先决条件

安装

sudo pip install curseXcel


代码

import curses
from curseXcel import Table
from time import sleep
def main(stdscr):
    y = 0
    table = Table(stdscr,2,4,10,45,20,spacing=2,col_names=True) # This sets the table rows,columns,width,height and spacing.
    for x in [['Name',0],['Age',1],['Job',2],['Country',3]]:
     # This sets the header columns.
        table.set_column_header(x[0],x[1])
    table.delete_row(1) # This deletes the additional row.
    nameList = [["Alice",25,'Painter','AUS'],["Bob",32,'cop','UK'],["Thinker",'coder',["Adam",70,'None','USA'],["Jessi",14,'BZA'],["Leo",30,'Army','India']]
# This above list contains data you need to loop through
    while (y != 'q'): # This makes the loop to repeat indefinitely.
        #y=  stdscr.getkey()
        for x in nameList:
            sleep(1)
            # This sets the elements of the list to the respective positions.
            table.set_cell(0,x[0])
            table.set_cell(0,1,x[1])
            table.set_cell(0,x[2])
            table.set_cell(0,3,x[3])
            table.refresh()

stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(True)

curses.wrapper(main)

curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin() # End curses

输出

This what the output looks like

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?