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)

在 1.1 版本加入.

class Caret(layout: IncrementalTextLayout, batch: Batch = None, color: Tuple[int, int, int, int] = (0, 0, 0, 255))

的可见文本插入标记 pyglet.text.layout.IncrementalTextLayout

插入符号被绘制为文档中的单个竖线 position 在文本布局对象上。如果 mark 不是None,则它给出当前文本选择的固定结尾。布局上的可见文本选择将随一起更新 markposition

默认情况下,使用布局的图形批次,因此不需要显式绘制插入符号。即使提供了不同的图形批次,插入符号也会在布局中正确定位和剪裁。

对文档(以及布局)的更新会自动传播到插入符号。

可以使用将插入符号对象压入窗口事件处理程序堆栈 Window.push_handlers 。插入符号将正确响应键盘、文本、鼠标和激活事件,包括双击和三次点击。如果文本布局与其他图形小部件一起使用,则需要一个图形用户界面工具包来将键盘和鼠标事件委托给适当的小部件。在这个阶段,Piglet不提供这样的工具包。

delete() None

从其批次中删除插入符号。

还会断开插入符号与其他布局事件的连接。

get_style(attribute: str) Any

在插入符号的当前位置获取文档的命名样式。

如果存在文本选择并且样式随选择而变化, pyglet.text.document.STYLE_INDETERMINATE 是返回的。

参数:
attribute应力

要检索的样式属性的名称。看见 pyglet.text.document 以获取已识别属性名称的列表。

返回类型:

object

move_to_point(x: int, y: int) None

将插入符号移动到给定的窗口坐标附近。

这个 mark 将重置为 None

参数:
x集成

X坐标。

y集成

Y坐标。

on_activate() bool

对象的处理程序 pyglet.window.Window.on_activate 事件。

当窗口处于非活动状态时,插入符号被隐藏。

on_deactivate() bool

对象的处理程序 pyglet.window.Window.on_deactivate 事件。

当窗口处于非活动状态时,插入符号被隐藏。

on_layout_update() None

对象的处理程序 IncrementalTextLayout.on_layout_update 事件。

on_mouse_drag(x: int, y: int, dx: int, dy: int, buttons: int, modifiers: int) 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 事件。

插入符号键盘处理程序假定布局始终具有键盘焦点。在调用此处理程序之前,图形用户界面工具包应按小部件焦点过滤键盘和文本事件。

on_translation_update() None
select_all() None

选择文档中的所有文本。

select_paragraph(x: int, y: int) None

选择给定窗口坐标处的段落。

参数:
x集成

X坐标。

y集成

Y坐标。

select_to_point(x: int, y: int) None

将插入符号移动到给定窗口坐标附近,同时保持 mark

参数:
x集成

X坐标。

y集成

Y坐标。

select_word(x: int, y: int) None

选择给定窗口坐标处的单词。

参数:
x集成

X坐标。

y集成

Y坐标。

set_style(attributes: dict[str, Any]) None

将文档样式设置在插入符号的当前位置。

如果选择了文本,则会立即修改样式。否则,在修改位置之前输入的下一个文本将采用给定的样式。

参数:
attributes迪克特

将属性名称映射到样式值的词典。看见 pyglet.text.document 以获取已识别属性名称的列表。

PERIOD: float = 0.5

闪烁时间,以秒为单位。

SCROLL_INCREMENT: int = 16

每次鼠标滚轮移动时滚动视区的像素。默认为12pt,96dpi。

property color: Tuple[int, int, int, int]

当前插入符号颜色的RGBA元组

当闪烁时,Alpha通道将被设置为 0 。可见时的默认插入符号颜色为 (0, 0, 0, 255) (不透明黑色)。

您可以将颜色设置为RGBA或RGB颜色元组。

警告

布局/窗口初始化后,此设置器可能会在短时间内失败!

使用 __init__ %s color 如果遇到此问题,请改用关键字参数。

每个颜色通道必须介于0和255之间(包括0和255)。如果颜色设置为RGB颜色,则将使用先前的Alpha通道值。

类型:

(int,int)

property layout: IncrementalTextLayout
property line: int

包含插入符号位置的行的索引。

设置好后, position 被修改为在请求的行上放置插入符号,同时保持最接近的X偏移量。

返回类型:

int

property mark: int

文档中文本选择的不可移动末端的位置。

交互式文本选择由其不可移动的末端(开始鼠标拖动时插入符号的位置)和插入符号的位置确定,插入符号通过鼠标和键盘输入交互移动。

此属性是 None 当没有选择时。

类型:

集成

property position: int

插入符号在文档中的位置。

property visible: bool

Caret可见性。

尽管有此属性,插入符号可能会因周期性闪烁而隐藏或通过 on_deactivate 事件处理程序是否附加到窗口。

类型:

布尔尔