python 如何创建命令列表并将其显示在表中

hzbexzde  于 2023-01-24  发布在  Python
关注(0)|答案(2)|浏览(144)

所以我决定尝试用python在windows上做一个漂亮的cmd菜单,但是我被第一件事卡住了。我想创建一个命令列表,然后在一个表中显示它们。我使用prettytable来创建表。
因此,我希望输出如下所示:

+---------+-------------------------------+
| Command |             Usage             |
+---------+-------------------------------+
|   Help  |             /help             |
|   Help2 |            /help 2            |
|   Help3 |            /help 3            |
+---------+-------------------------------+

但是我不知道如何创建和使用这个列表。

from prettytable import PrettyTable
_cmdTable =  PrettyTable(["Command", "Usage"])

#Here I create the commands
help = ['Help','/help']
help = ['Help2','/help2']
help = ['Help2','/help3']

#And here I add rows and print it

_cmdTable.add_row([help[0], help[1]])
_cmdTable.add_row([help2[0], help[1]])
_cmdTable.add_row([help3[0], help[1]])

print(_cmdTable)

但这实在是太麻烦了,我想让它简单一点,但我不知道怎么做,我想象它看起来像这样:

from prettytable import PrettyTable
_cmdTable =  PrettyTable(["Command", "Usage"])

commands = {["Help", "/help"], ["Help2", "/help2"], ["Help3", "/help3"]}
for cmd in commands:
    _cmdTable.add_row([cmd])

print(_cmdTable)

我知道这是可能的,只是不知道怎么做。它不一定要使用相同的模块表,如果你知道一些更好的或更适合这个要求,使用它。
我基本上是想让这个过程更简单,而不是每次我添加一个新命令时都手动操作。希望我解释清楚了。谢谢!

zwghvu4y

zwghvu4y1#

您可以使用字符串格式进行更多的手动控制

header = ['Command', 'Usage']
rows = [['Help', '/help'], ['Help2', '/help 2'], ['Help3', '/help 3']]

spacer1 = 10
spacer2 = 20

line = '+' + '-'*spacer1 + '+' + '-'*spacer2 + '+\n'
header = f'| {header[0]:<{spacer1-1}}|{header[1]:^{spacer2}}|\n'

table_rows = ''

for row in rows:
    table_rows += f'| {row[0]:<{spacer1-1}}|{row[1]:^{spacer2}}|\n'
    
print(line + header + line + table_rows + line)

编辑:添加了带有变量的间距控件。

tf7tbtn2

tf7tbtn22#

不能将列表放入集合中。commands应该是列表的列表或元组的集合。在此应用程序中使用列表可能更合适,因为您可能希望表项按特定顺序排列。
你不应该把cmd放在另一个列表中,因为commands的每个元素都已经是一个列表了。

commands = [["Help", "/help"], ["Help2", "/help2"], ["Help3", "/help3"]]
for cmd in commands:
    _cmdTable.add_row(cmd)

相关问题