prompt-toolkit: динамически добавлять и удалять буферы для VSplit или HSplit?
Можно ли добавлять и удалять буферы? Поэтому я хочу изменить полноэкранный макет.
Например, я хочу иметь такой макет:
layout = VSplit([
Window(content=BufferControl(buffer_name=DEFAULT_BUFFER)),
Window(width=D.exact(1),
content=FillControl('|', token=Token.Line)),
Window(content=BufferControl(buffer_name='RESULT')),
])
Теперь я хочу добавить еще один буфер через некоторое время, чтобы макет был таким...
layout = VSplit([
Window(content=BufferControl(buffer_name=DEFAULT_BUFFER)),
Window(width=D.exact(1),
content=FillControl('|', token=Token.Line)),
Window(content=BufferControl(buffer_name='RESULT')),
Window(content=BufferControl(buffer_name='NEW_BUFFER')),
])
Есть ли какая-нибудь функция layout.addbuffer(...) или что-то вроде этого?
1 ответ
Это можно сделать, полностью заменив layout
атрибут Application
, Так что-то вроде:
class MyApplication(Application):
def __init__(self):
# Initialise with the first layout
super(MyApplication, self).__init__(
layout=VSplit([
Window(content=BufferControl(buffer_name=DEFAULT_BUFFER)),
Window(width=D.exact(1),
content=FillControl('|', token=Token.Line)),
Window(content=BufferControl(buffer_name='RESULT')),
]),
)
def add_buffer(self):
# Update to use a new layout
self.layout = VSplit([
Window(content=BufferControl(buffer_name=DEFAULT_BUFFER)),
Window(width=D.exact(1),
content=FillControl('|', token=Token.Line)),
Window(content=BufferControl(buffer_name='RESULT')),
Window(content=BufferControl(buffer_name='NEW_BUFFER')),
])