python - python-prompt-toolkit:使容器可滚动
问题描述
我正在尝试使用 ScrollablePane 使容器可滚动。但我无法使用鼠标或键盘滚动
from prompt_toolkit.layout.controls import FormattedTextControl
from prompt_toolkit import Application
from prompt_toolkit.layout import ScrollablePane
from prompt_toolkit.layout.layout import Layout
from prompt_toolkit.layout.containers import HSplit, VSplit, Window
content = HSplit(
[
VSplit(
[Window(FormattedTextControl('First Column')),
Window(FormattedTextControl('Second Column'))
]),
VSplit(
[Window(FormattedTextControl('First Column')),
Window(FormattedTextControl('Second Column'))
]),
VSplit(
[Window(FormattedTextControl('First Column')),
Window(FormattedTextControl('Second Column'))
]),
])
container = ScrollablePane(content=content)
app = Application(layout=Layout(container), full_screen=True)
app.run()
解决方案
mouse_support
首先,您应该启用app
:
app = Application(mouse_support=True,...)
这实际上似乎并没有使ScrollablePane
鼠标滚轮或使用箭头滚动。我还没有找到解决方案。
我发现在其中堆叠一堆可聚焦元素(例如Window
)ScrollablePane
并分配键盘快捷键以将应用程序焦点从一个元素更改为下一个元素将滚动窗格。
示例(降低窗口高度或增加number
显示部分模糊):
from prompt_toolkit import Application
from prompt_toolkit.application import get_app
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.layout import HSplit, FormattedTextControl, Window, ScrollablePane, Layout
kb = KeyBindings()
number = 30
inner = HSplit(children=[Window(FormattedTextControl(text=f"Button {x}")) for x in range(number)])
index = 0
def increment_index():
global index
if index == number - 1:
index = 0
else:
index += 1
@kb.add('n')
def _(event):
increment_index()
get_app().layout.focus(inner.children[index])
@kb.add('q')
def _(event):
get_app().exit()
outer = ScrollablePane(content=inner)
app = Application(mouse_support=True, layout=Layout(outer), full_screen=True, key_bindings=kb)
app.run()
推荐阅读
- python - 如何在散点图中以均匀间隔更改 x 轴值?
- excel - 使用 VBA 将行和列复制到新工作表
- python - 在空 DataFrame 上执行 .transform 时出现 ValueError
- sudo - 有没有办法修复 Fedora 上目录的所有权限?
- django - 如何在管理员中从('另一个')模型中注入数据?
- content-security-policy - 本地资源的内容安全策略
- algorithm - 边缘时间的图形算法 - 可以只有一个来源吗?
- python - 如何正确更新我的集成函数数组?
- php - 如何在 PHP 中获取与 Google Drive Api 的共享链接
- javascript -