Я создаю сценарий командной строки, и я бы хотел, чтобы там было поле…
+--------+
| |
| |
| |
+--------+
… который всегда будет соответствовать его содержимому. Я знаю, как сделать верх и низ, но правая и правая части работают правильно. В каждой строке может быть одна замена строки или 5, а длина этих строк может быть любой от 0 до 80.
Я делал такие вещи, как:
print "|%s|" % (my_string.ljust(80-len(my_string)))
Но черт возьми, какой беспорядок… И это всего лишь одна жестко запрограммированная замена. Я понятия не имею, как сделать его динамическим, скажем, с двумя подписчиками в первой строке, тремя подписчиками во второй строке и 1 подпиской в третьей строке (все это в формате столбца).
Итак, для базового примера мне нужно:
+--------+
| 1 |
| 1 2 3 |
| 1 2 |
+--------+
Я делаю это так:
Таким образом, вы сначала форматируете все свои объекты в
text
wariable, а затем передаете их черезbordered()
функцию.Вы можете использовать модуль
curses
из стандартной библиотеки Python для Linux и Mac. Также вы можете попробовать библиотекуpygcurse
для Mac, Linux и Windows. Кроме того, вы можете прочитать его. Но для простого диалога вы можете использовать следующий код:Выход:
Вы можете использовать
'*'
для полей ширины и точности строкового формата, как описано в этот ответ. Вот пример:печатает:
Я опаздываю на вечеринку, но вот моя версия:
Что печатает:
Вы можете сделать это с помощью
tabulate
.Выход: