pyglet.text.caret
提供文本布局的键盘和鼠标编辑步骤。
示例用法::
from pyglet import window
from pyglet.text import layout, caret
my_window = window.Window(...)
my_layout = layout.IncrementalTextLayout(...)
my_caret = caret.Caret(my_layout)
my_window.push_handlers(my_caret)
- class Caret
的可见文本插入标记 pyglet.text.layout.IncrementalTextLayout 。
插入符号被绘制为文档中的单个竖线 position 在文本布局对象上。如果
mark不是None,则它给出当前文本选择的固定结尾。布局上的可见文本选择将随一起更新mark和position。默认情况下,使用布局的图形批次,因此不需要显式绘制插入符号。 即使提供了不同的图形批次,插入符号也将在布局中正确定位和剪辑。
对文档(以及布局)的更新会自动传播到插入符号。
可以使用将插入符号对象压入窗口事件处理程序堆栈
Window.push_handlers. 插入符号将正确响应键盘、文本、鼠标和激活事件,包括双击和三次单击。如果文本布局与其他图形小部件一起使用,则需要一个图形小部件工具包来将键盘和鼠标事件委托给相应的小部件。 Pyglet现阶段不提供这样的工具包。- __init__(
- layout: IncrementalTextLayout,
- batch: Batch | None = None,
- color: tuple[int, int, int, int] = (0, 0, 0, 255),
为布局创建插入符号。
默认情况下,使用布局的批次,因此不需要显式绘制插入符号。
- 参数:
- layout~pyglet.text.layout.IncrementalTextLayout
要控制的布局。
- batch~pyglet.graphics.Batch
要向其中添加顶点的图形批处理。
- color(int,int)
具有范围内分量的RGBA或RB多元组 [0, 255] . RB颜色将被视为不透明度为255。
- get_style(attribute: str) Any
在插入符号的当前位置获取文档的命名样式。
如果存在文本选择并且样式随选择而变化, pyglet.text.document.STYLE_INDETERMINATE 是返回的。
- on_mouse_drag( ) bool
对象的处理程序 pyglet.window.Window.on_mouse_drag 事件。
鼠标处理程序不检查坐标的界限:在调用此处理程序之前,图形用户界面工具包应该过滤不与布局相交的事件。
- 返回类型:
- on_mouse_press(x: int, y: int, button: int, modifiers: int) bool
对象的处理程序 pyglet.window.Window.on_mouse_press 事件。
鼠标处理程序不检查坐标的界限:在调用此处理程序之前,图形用户界面工具包应该过滤不与布局相交的事件。
此处理程序跟踪短时间内按下鼠标的次数,并使用此跟踪来重建用于选择单词和段落的双击和三次单击事件。当正在使用图形用户界面工具包时,这种技术并不合适,因为还必须跟踪活动的小部件。如果正在使用图形用户界面工具包,请不要使用此鼠标处理程序。
- 返回类型:
- on_mouse_scroll(x: float, y: float, scroll_x: float, scroll_y: float) bool
对象的处理程序 pyglet.window.Window.on_mouse_scroll 事件。
鼠标处理程序不检查坐标的界限:在调用此处理程序之前,图形用户界面工具包应该过滤不与布局相交的事件。
布局视区按以下方式滚动 SCROLL_INCREMENT 每次“点击”的像素数。
- 返回类型:
- on_text(text: str) bool
对象的处理程序 pyglet.window.Window.on_text 事件。
插入符号键盘处理程序假定布局始终具有键盘焦点。在调用此处理程序之前,图形用户界面工具包应按小部件焦点过滤键盘和文本事件。
- 返回类型:
- on_text_motion(motion: int, select: bool = False) bool
对象的处理程序 pyglet.window.Window.on_text_motion 事件。
插入符号键盘处理程序假定布局始终具有键盘焦点。在调用此处理程序之前,图形用户界面工具包应按小部件焦点过滤键盘和文本事件。
- 返回类型:
- on_text_motion_select(motion: int) bool
对象的处理程序 pyglet.window.Window.on_text_motion_select 事件。
插入符号键盘处理程序假定布局始终具有键盘焦点。在调用此处理程序之前,图形用户界面工具包应按小部件焦点过滤键盘和文本事件。
- 返回类型:
- set_style(attributes: dict[str, Any]) None
将文档样式设置在插入符号的当前位置。
如果选择了文本,则会立即修改样式。否则,在修改位置之前输入的下一个文本将采用给定的样式。
- property color: tuple[int, int, int, int]
当前插入符号颜色的RGBA多元组。
当闪烁时,Alpha通道将被设置为
0。可见时的默认插入符号颜色为(0, 0, 0, 255)(不透明黑色)。您可以将颜色设置为RGBA或RGB颜色元组。
警告
布局/窗口初始化后,此设置器可能会在短时间内失败!
使用
__init__%scolor如果遇到此问题,请改用关键字参数。每个颜色通道必须介于0和255之间(包括0和255)。如果颜色设置为RGB颜色,则将使用先前的Alpha通道值。
- property layout: IncrementalTextLayout