pyglet.window

子模块

细节

窗口和用户界面事件。

此模块允许应用程序创建和显示具有OpenGL上下文的窗口。窗口可以创建多种边框样式或设置全屏。

您可以为键盘、鼠标和窗口事件注册事件处理程序。对于游戏和Kiosk,您还可以将输入限制到您的窗口,例如,禁止用户使用特定的组合键从应用程序切换,或者捕获和隐藏鼠标。

快速入门

调用窗口构造函数以创建新窗口::

from pyglet.window import Window
win = Window(width=960, height=540)

附加您自己的事件处理程序::

@win.event
def on_key_press(symbol, modifiers):
    # ... handle this event ...

将窗口的绘图代码放在 Window.on_draw 事件处理程序::

@win.event
def on_draw():
    # ... drawing code ...

打电话 pyglet.app.run 要进入主事件循环(默认情况下,在关闭所有打开的窗口后返回):

from pyglet import app
app.run()

创建游戏窗口

使用 set_exclusive_mouse() 隐藏鼠标光标并接收相对的鼠标移动事件。指定 fullscreen=True 作为关键字参数传递给 Window 用于呈现到整个屏幕而不是打开窗口的构造函数::

win = Window(fullscreen=True)
win.set_exclusive_mouse()

使用多个屏幕

默认情况下,全屏窗口在主显示器上打开(通常由用户在其操作系统设置中设置)。如果愿意,您可以检索附加屏幕的列表并手动选择一个屏幕。这对于在每个屏幕上打开全屏窗口非常有用:

display = pyglet.canvas.get_display()
screens = display.get_screens()
windows = []
for screen in screens:
    windows.append(window.Window(fullscreen=True, screen=screen))

如果窗口不是全屏的,则指定屏幕不起作用。

指定OpenGL上下文属性

每个窗口都有自己的上下文,该上下文是在创建窗口时创建的。您可以在创建上下文之前通过创建“模板”配置来指定它的属性:

from pyglet import gl
# Create template config
config = gl.Config()
config.stencil_size = 8
config.aux_buffers = 4
# Create a window using this config
win = window.Window(config=config)

要确定是否支持给定的配置,请查询屏幕(请参阅上面的“使用多个屏幕”):

configs = screen.get_matching_configs(config)
if not configs:
    # ... config is not supported
else:
    win = window.Window(config=configs[0])

班级

class Window

基类:EventDispatcher

平台无关的应用程序窗口。

窗口是占用操作系统资源的“重量级”对象。窗口的“客户端”或“内容”区域完全由OpenGL视区填充。应用程序无法访问操作系统窗口小部件或控件;所有渲染都必须通过OpenGL完成。

窗口可以显示为浮动区域,也可以设置为填满整个屏幕(全屏)。浮动时,窗口可能显示为无边框或装饰有特定于平台的框架(例如,包括标题栏、最小化和关闭按钮、调整大小手柄等)。

虽然可以设置窗口的位置,但建议应用程序允许平台根据本地约定放置窗口。这将确保它不会被其他窗口遮挡,并显示在适合用户的屏幕上。

若要呈现到窗口中,必须首先调用其 switch_to() 方法以使其成为活动的OpenGL上下文。如果在应用程序中只使用一个窗口,则可以跳过此步骤,因为它将始终是活动上下文。

方法

abstract activate() None

尝试将键盘焦点恢复到窗口。

根据窗口管理器或操作系统的不同,这可能不会成功。例如,在Windows XP上,不允许一个应用程序从另一个应用程序“窃取”焦点。取而代之的是,窗口的任务栏图标将闪烁,表明它需要注意。

返回类型:

None

static clear() None

把窗户清空。

这是清除颜色和深度缓冲区的一种方便方法。该窗口必须是活动上下文(请参见 switch_to() )。

返回类型:

None

close() None

关上窗户。

关闭窗口后,总账上下文将无效。窗口实例一旦关闭就不能再使用。要重新使用Windows,请参见 set_visible() 取而代之的是。

这个 pyglet.app.EventLoop.on_window_close() 事件由 pyglet.app.event_loop 在调用此方法时。

返回类型:

None

dispatch_event(*args: Any) None

将事件调度到附加的事件处理程序。

该事件被传播到堆栈中所有已注册的事件处理程序,从开始到顶部再向下传播。如果任何注册的事件处理程序返回 EVENT_HANDLED ,则堆栈下面的其他处理程序都不会收到此事件。

此方法有几个可能的返回值。如果任何事件处理程序已返回 EVENT_HANDLED ,则此方法也将返回 EVENT_HANDLED 。如果不是,此方法将返回 EVENT_UNHANDLED 。如果没有注册接收该事件的事件, False 是返回的。

返回类型:

None

返回:

EVENT_HANDLED 如果返回任何事件处理程序 EVENT_HANDLEDEVENT_UNHANDLED 如果调用了一个或多个事件处理程序而没有返回任何事件处理程序 EVENT_HANDLEDFalse 如果没有注册任何事件处理程序。

abstract dispatch_events() None

轮询操作系统事件队列以查找新事件和调用附加事件处理程序。

此方法是为面向Piglet 1.0的遗留应用程序和必须将其事件循环集成到另一个框架中的高级应用程序提供的。

典型的应用程序应该使用 pyglet.app.run()

返回类型:

None

draw_mouse_cursor() None

绘制自定义鼠标光标。

如果当前鼠标光标具有 drawable 设置,则在翻转缓冲区以呈现它之前调用此方法。

几乎不需要重写此方法;相反,子类 MouseCursor 并提供您自己的 draw() 方法。

返回类型:

None

abstract flip() None

交换OpenGL前台和后台缓冲区。

在双缓冲窗口上调用此方法以使用后台缓冲区更新可见显示。默认情况下,Windows是双缓冲的,除非您关闭此功能。

执行此操作后,后台缓冲区的内容未定义。

默认设置 event_loop 在窗口的 on_draw() 事件。

返回类型:

None

get_framebuffer_size() tuple[int, int]

返回窗口帧缓冲区的实际像素大小。

使用HiDPI屏幕时,窗口的帧缓冲区大小可能大于请求的窗口大小。如果执行的操作需要知道窗口中的实际像素数,则应使用此方法,而不是 Window.get_size() 。例如,设置窗口投影或设置glViewport大小。

返回类型:

tuple[int, int]

返回:

窗口的帧缓冲区的宽度和高度,以像素为单位。

abstract get_location() tuple[int, int]

返回窗口的当前位置。

返回类型:

tuple[int, int]

返回:

虚拟桌面上左边缘和上边缘与其各自边缘之间的距离,以像素为单位。

get_pixel_ratio() float

返回帧缓冲区/窗口大小比率。

某些平台和/或窗口系统支持亚像素缩放,从而使帧缓冲区大小大于窗口大小。OSX上的视网膜屏幕和Linux上的Gnome就是一些例子。

在Retina系统上,返回比率通常为2.0,因为大小为500 x 500的窗口将具有1000 x 1000的帧缓冲区。也可能遇到介于1.0和2.0之间的分数值,以及高于2.0的数值。

返回类型:

float

get_size() tuple[int, int]

返回窗口的当前大小。

这不包括窗口的边框或标题栏。

返回类型:

tuple[int, int]

返回:

窗口的宽度和高度,以像素为单位。

get_system_mouse_cursor(name: str) MouseCursor

获取系统鼠标光标。

使用 set_mouse_cursor() 若要激活此方法返回的光标,请执行以下操作。此方法接受的名称是 CURSOR_* 在此类上定义的常量。

返回类型:

MouseCursor

abstract maximize() None

最大化窗口。

此方法的行为在某种程度上取决于用户的显示设置。在多显示器系统上,窗口可以最大化到单个屏幕或整个虚拟桌面。

返回类型:

None

abstract minimize() None

最小化窗口。

返回类型:

None

abstract set_caption(caption: str) None

设置窗口的标题。

标题会出现在窗口的标题栏中(如果有的话),以及Windows和许多X11窗口管理器的任务栏中。

返回类型:

None

set_exclusive_keyboard(exclusive: bool = True) None

防止用户使用键盘快捷键从此窗口切换。

启用后,该功能会禁用某些特定于操作系统的组合键,如Alt+Tab(OS X上的Command+Tab)。这在某些Kiosk应用程序中可能很有用,但在一般应用程序或游戏中应该避免。

返回类型:

None

set_exclusive_mouse(exclusive: bool = True) None

隐藏鼠标光标并将所有鼠标事件定向到此窗口。

启用时,此功能可防止鼠标离开窗口。它对于需要完全控制鼠标的某些类型的游戏很有用。启用独占鼠标时,后续事件中报告的鼠标位置没有意义;您应该只使用相对运动参数 dxdy

返回类型:

None

set_fullscreen(
fullscreen: bool = True,
screen: Screen | None = None,
mode: ScreenMode | None = None,
width: int | None = None,
height: int | None = None,
) None

切换到全屏或从全屏切换到全屏。

切换全屏后,GL上下文应该保留其状态和对象,但是需要清除并重新绘制缓冲区。

如果 widthheight 是指定的,并且 fullscreen 为True,则屏幕可能会切换到与给定大小最匹配的不同分辨率。如果分辨率不完全匹配,则选择更高的分辨率,并且窗口将在覆盖屏幕其余部分的黑色边框内居中。

参数:
  • fullscreen (bool) -- 如果窗口应全屏显示,则为True;如果应设置窗口,则为False。

  • screen (Screen | None) -- 如果不是None且Full Screen为True,则窗口将移动到给定屏幕。屏幕必须与窗口属于同一显示器。

  • mode (ScreenMode | None) -- 屏幕将切换到给定模式。该模式必须是通过枚举 get_modes() 。如果没有,将从给定的模式中选择合适的模式 widthheight

  • width (int | None) -- int可选窗口宽度。 如果未指定,则默认为窗口时之前的窗口大小,如果是全屏,默认为屏幕大小。 ..已添加版本::1.2

  • height (int | None) -- 窗口的可选高度。 如果未指定,则默认为窗口时之前的窗口大小,如果是全屏,默认为屏幕大小。 ..已添加版本::1.2

返回类型:

None

set_icon(*images: AbstractImage) None

设置窗口图标。

如果提供了多个图像,则会选择一个大小合适的图像(如果没有提供正确的大小,则会对图像进行缩放)。

可提供的有用尺寸包括16x16、32x32、64x64(仅限Mac)和128x128(仅限Mac)。

返回类型:

None

abstract set_location(x: int, y: int)

设置窗口的位置。

参数:
  • x (int) -- 窗口左边缘与虚拟桌面左边缘之间的距离,以像素为单位。

  • y (int) -- 窗口的顶边距虚拟桌面的顶边的距离,以像素为单位。

set_maximum_size(width: int, height: int) None

设置窗口的最大大小。

一旦设置,用户将不能调整大于给定尺寸的窗口大小。无法取消对窗口的最大尺寸限制(但可以将其设置为较大的值)。

如果设置的最大大小小于窗口的当前大小,则行为未定义。

窗口大小不包括边框或标题栏。

参数:
  • width (int) -- 窗口的最大宽度,以像素为单位。

  • height (int) -- 窗口的最大高度,以像素为单位。

返回类型:

None

set_minimum_size(width: int, height: int) None

设置窗口的最小大小。

一旦设置,用户将不能调整小于给定尺寸的窗口大小。无法删除窗口的最小大小限制(但可以将其设置为0,0)。

如果设置的最小大小大于窗口的当前大小,则行为未定义。

窗口大小不包括边框或标题栏。

参数:
  • width (int) -- 窗口的最小宽度,以像素为单位。

  • height (int) -- 窗口的最小高度,以像素为单位。

返回类型:

None

set_mouse_cursor(cursor: MouseCursor | None = None) None

更改鼠标光标的外观。

仅当鼠标光标位于此窗口内时,才会更改其外观。

参数:

cursor (MouseCursor | None) -- 要设置的指针,或 None 恢复默认指针。

返回类型:

None

set_mouse_platform_visible(platform_visible: bool | None = None) None

设置平台绘制的鼠标指针可见性。

更改鼠标指针或独占模式后自动调用。

应用程序通常不需要调用此方法。

看见:

set_mouse_visible() 取而代之的是。

参数:

platform_visible (bool | None) -- 如果 None ,将平台可见性设置为当前独占模式和指针类型所需的可见性。 否则,布尔值将覆盖并强制可见性。

返回类型:

None

set_mouse_visible(visible: bool = True) None

显示或隐藏鼠标光标。

只有当鼠标光标位于此窗口内时,它才会隐藏。鼠标事件仍将照常处理。

返回类型:

None

set_size(width: int, height: int) None

调整窗口大小。

如果窗口不能调整大小,或者它当前是全屏的,则行为是未定义的。

窗口大小不包括边框或标题栏。

返回类型:

None

set_visible(visible: bool = True) None

显示或隐藏窗口。

返回类型:

None

abstract switch_to() None

使该窗口成为当前的OpenGL渲染上下文。

一次只能有一个OpenGL上下文处于活动状态。此方法将当前窗口上下文设置为活动窗口上下文。

在大多数情况下,应该使用此方法,而不是直接调用 set_current() 。后者不会为您执行特定于平台的状态管理任务。

返回类型:

None

事件

on_activate() None

窗户被激活了。

此事件可以通过单击标题栏将其带到前台来触发;也可以通过某种特定于平台的方法来触发。

当窗口处于“活动”状态时,它具有键盘焦点。

活动:

返回类型:

None

on_close() None

用户尝试关闭窗口。

此事件可通过单击窗口标题栏中的“X”控件框或通过某种其他与平台相关的方式触发。

默认处理程序设置 has_exitTrue 。在pyglet1.1中,如果 pyglet.app.event_loop 正在被利用, close 也被调用,并立即关闭窗口。

活动:

返回类型:

None

on_context_lost() None

窗口的总账上下文丢失。

当上下文丢失时,在重新创建上下文之前,不能再调用GL方法。这是一种罕见的事件,可能是由用户切换到不兼容的视频模式触发的。当它发生时,应用程序将需要重新加载所有对象(显示列表、纹理对象、着色器)以及恢复GL状态。

活动:

返回类型:

None

on_context_state_lost() None

窗口的GL上下文的状态已丢失。

如果窗口被移动到另一个视频设备,或者在全屏或窗口模式之间移动,则Piglet有时可能需要重新创建窗口的GL上下文。在这种情况下,它将尝试在新旧上下文之间共享对象(显示列表、纹理对象、着色器)。如果这是可能的,则只丢失GL上下文的当前状态,并且应用程序应该简单地恢复状态。

活动:

返回类型:

None

on_deactivate() None

窗户被停用了。

可以通过单击另一个应用程序窗口来触发此事件。当一个窗口被停用时,它不再具有键盘焦点。

活动:

返回类型:

None

on_draw() None

应重新绘制窗口内容。

这个 EventLoop 时将调度此事件。 draw 方法已被调用。该窗口将已经具有GL上下文,因此不需要调用 switch_to 。窗子里的 flip 方法将在此事件之后立即调用,因此您的事件处理程序不应该调用。

You should make no assumptions about the window contents when this event is triggered; a resize or expose event may have invalidated the framebuffer since the last time it was drawn. :rtype: None

Added in version 1.1.

活动:

on_expose() None

窗口的一部分需要重新绘制。

此事件在窗口首次出现时触发,并且在任何时候窗口内容因其他窗口遮挡而无效时都会触发此事件。

无法确定窗口的哪一部分需要重绘。请注意,随着较新的窗口管理器自动组合窗口并保留窗口内容的后备存储,这种方法的使用正变得越来越不常见。

活动:

返回类型:

None

on_file_drop(x: int, y: int, paths: list[str]) None

文件已放入窗口。

参数:
  • x (int) -- 与发生跌落的窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与发生掉落的窗口底部边缘的距离(以像素为单位)。

  • paths (list[str]) -- 放入窗口中的文件路径字符串。

返回类型:

None

Added in version 1.5.1.

活动:

on_hide() None

窗户被藏起来了。

此事件在用户最小化或隐藏窗口时触发。

活动:

返回类型:

None

on_key_press(symbol: int, modifiers: int) None

键盘上的一个键被按下(并被按住)。

自pyglet 1.1以来,默认处理程序将 on_close() 事件,如果 ESC 已按下键。

参数:
  • symbol (int) -- 按下了键符号。

  • modifiers (int) -- 激活的键修改器的按位组合。

活动:

返回类型:

None

on_key_release(symbol: int, modifiers: int) None

键盘上的一个键被释放了。

参数:
  • symbol (int) -- 按下了键符号。

  • modifiers (int) -- 激活的键修改器的按位组合。

活动:

返回类型:

None

on_mouse_drag(
x: int,
y: int,
dx: int,
dy: int,
buttons: int,
modifiers: int,
) None

在按下一个或多个鼠标按钮的情况下移动了鼠标。

只要连续按住拖动按钮,即使鼠标离开窗口,此事件也会继续激发。

参数:
  • x (int) -- 与窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与窗口底部边缘的距离(以像素为单位)。

  • dx (int) -- 相对于上一个鼠标位置的X位置。

  • dy (int) -- 相对于上一个鼠标位置的Y位置。

  • buttons (int) -- 当前按下的鼠标按键的按位组合。

  • modifiers (int) -- 当前活动的任何键盘修改器的按位组合。

活动:

返回类型:

None

on_mouse_enter(x: int, y: int) None

鼠标被移到了窗户里。

如果当前正在拖动鼠标,则不会触发此事件。

活动:

返回类型:

None

on_mouse_leave(x: int, y: int) None

鼠标被移到了窗外。

如果当前正在拖动鼠标,则不会触发此事件。

返回类型:

None

活动:

on_mouse_motion(x: int, y: int, dx: int, dy: int) None

鼠标在没有按住按钮的情况下移动。

参数:
  • x (int) -- 与窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与窗口底部边缘的距离(以像素为单位)。

  • dx (int) -- 相对于上一个鼠标位置的X位置。

  • dy (int) -- int与上一鼠标位置的相对Y位置。

活动:

返回类型:

None

on_mouse_press(x: int, y: int, button: int, modifiers: int) None

一个鼠标按钮被按下(并被按住)。

参数:
  • x (int) -- 与窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与窗口底部边缘的距离(以像素为单位)。

  • button (int) -- 按下的鼠标按钮。

  • modifiers (int) -- 当前活动的任何键盘修改器的按位组合。

活动:

返回类型:

None

on_mouse_release(x: int, y: int, button: int, modifiers: int) None

释放了一个鼠标按钮。

参数:
  • x (int) -- 与窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与窗口底部边缘的距离(以像素为单位)。

  • button (int) -- 释放的鼠标按钮。

  • modifiers (int) -- 当前活动的任何键盘修改器的按位组合。

活动:

返回类型:

None

on_mouse_scroll(x: int, y: int, scroll_x: float, scroll_y: float) None

鼠标滚轮已滚动。

请注意,大多数鼠标只有一个垂直滚动轮,因此scroll_x通常为0。 Apple Mighty Mouse是一个例外,它有一个鼠标球来代替轮子,允许两者 scroll_xscroll_y 有动静。

参数:
  • x (int) -- 与窗口左边缘的距离(以像素为单位)。

  • y (int) -- 与窗口底部边缘的距离(以像素为单位)。

  • scroll_x (float) -- 在水平轴上的移动量。

  • scroll_y (float) -- 垂直轴上的移动量。

活动:

返回类型:

None

on_move(x: int, y: int) None

窗户被挪动了。

参数:
  • x (int) -- 从屏幕左边缘到窗口左边缘的距离。

  • y (int) -- 从屏幕顶部边缘到 top 窗户的边缘。

返回类型:

None

活动:

on_refresh(dt: float) None

应重新绘制窗口内容。

这个 EventLoop 时将调度此事件。 draw 方法已被调用。该窗口将已经具有GL上下文,因此不需要调用 switch_to() 。窗子里的 flip() 方法将在此事件之后立即调用,因此您的事件处理程序不应该调用。

You should make no assumptions about the window contents when this event is triggered; a resize or expose event may have invalidated the framebuffer since the last time it was drawn. :rtype: None

Added in version 2.0.

活动:

on_resize(width: int, height: int) None

窗户的大小被调整了。

调度此事件时,窗口将具有GL上下文;不需要调用 switch_to() 在这个操控器里。

活动:

返回类型:

None

on_show() None

窗口被显示出来。

当窗口在最小化、隐藏或首次显示后恢复时,会触发此事件。

活动:

返回类型:

None

on_text(text: str) None

用户输入一些文本。

通常,这是在 on_key_press() 在此之前 on_key_release() ,但如果按键(重复按键)也可以调用多次;或者如果使用另一种输入法(例如,笔输入),则在不按键的情况下调用。

您应该始终使用此方法来解释文本,因为关键符号通常具有到其Unicode表示形式的复杂映射,而此事件负责这些表示形式。

活动:

返回类型:

None

on_text_motion(motion: int) None

用户移动了文本输入光标。

通常,这是在 on_key_press() 在此之前 on_key_release() ,但如果键是Help Down(重复按键),也可以多次调用。

您应该始终使用此方法来移动文本输入光标(脱字符),因为不同的平台有不同的默认键盘映射,并且正确处理重复键。

The values that motion can take are defined in pyglet.window.key: :rtype: None

  • MOTION_UP

  • MOTION_RIGHT

  • MOTION_DOWN

  • MOTION_LEFT

  • MOTION_NEXT_WORD

  • MOTION_PREVIOUS_WORD

  • MOTION_BEGINNING_OF_LINE

  • MOTION_END_OF_LINE

  • MOTION_NEXT_PAGE

  • MOTION_PREVIOUS_PAGE

  • MOTION_BEGINNING_OF_FILE

  • MOTION_END_OF_FILE

  • MOTION_BACKSPACE

  • MOTION_DELETE

活动:

on_text_motion_select(motion: int) None

用户在扩展选择时移动了文本输入光标。

通常,这是在 on_key_press() 在此之前 on_key_release() ,但如果键是Help Down(重复按键),也可以多次调用。

您应该始终使用此方法来响应文本选择事件,而不是原始 on_key_press() ,因为不同的平台有不同的默认键盘映射,并且键重复被正确处理。

The values that motion can take are defined in pyglet.window.key: :rtype: None

  • MOTION_UP

  • MOTION_RIGHT

  • MOTION_DOWN

  • MOTION_LEFT

  • MOTION_NEXT_WORD

  • MOTION_PREVIOUS_WORD

  • MOTION_BEGINNING_OF_LINE

  • MOTION_END_OF_LINE

  • MOTION_NEXT_PAGE

  • MOTION_PREVIOUS_PAGE

  • MOTION_BEGINNING_OF_FILE

  • MOTION_END_OF_FILE

活动:

属性

aspect_ratio

窗口的纵横比。只读。

caption

窗口标题(标题)。只读。

config

描述此窗口的上下文的GL配置。只读。

context

附加到此窗口的OpenGL上下文。只读。

display

此窗口所属的显示器。只读。

fullscreen

如果窗口当前为全屏,则为真。只读。

has_exit: bool = False
height

窗口的高度,以像素为单位。读写。

invalid: bool = True
projection

OpenGL窗口投影矩阵。读写。

在使用任何内置可绘制类时,此矩阵用于变换顶点。 view 是先完成的,然后 projection

默认投影矩阵为正交(2D),但自定义 Mat4 可以设置实例。或者,您可以提供由16个值组成的平面元组。

(2D),但可以更改为任何所需的4x 4矩阵。 :see: Mat4

resizeable

如果窗口大小可调,则为真。只读。

screen

此窗口全屏显示的屏幕。只读。

size

窗口的大小。读写。

style

窗口样式;其中一个 WINDOW_STYLE_* 常量。只读。

view

OpenGL窗口视图矩阵。读写。

在使用任何内置可绘制类时,此矩阵用于变换顶点。 view 是先完成的,然后 projection

默认视图是标识矩阵,但自定义 Mat4 可以设置实例。或者,您可以提供由16个值组成的平面元组。

viewport

窗口视图。

窗口视口用(x,y,宽度,高度)表示。

visible

如果窗口当前可见,则为真。只读。

vsync

如果缓冲区翻转与屏幕的垂直倒带同步,则为真。只读。

width

窗口的宽度,以像素为单位。读写。

类属性:游标名称

CURSOR_CROSSHAIR: str = 'crosshair'
CURSOR_DEFAULT = None
CURSOR_HAND: str = 'hand'
CURSOR_HELP: str = 'help'
CURSOR_NO: str = 'no'
CURSOR_SIZE: str = 'size'
CURSOR_SIZE_DOWN: str = 'size_down'
CURSOR_SIZE_DOWN_LEFT: str = 'size_down_left'
CURSOR_SIZE_DOWN_RIGHT: str = 'size_down_right'
CURSOR_SIZE_LEFT: str = 'size_left'
CURSOR_SIZE_LEFT_RIGHT: str = 'size_left_right'
CURSOR_SIZE_RIGHT: str = 'size_right'
CURSOR_SIZE_UP: str = 'size_up'
CURSOR_SIZE_UP_DOWN: str = 'size_up_down'
CURSOR_SIZE_UP_LEFT: str = 'size_up_left'
CURSOR_SIZE_UP_RIGHT: str = 'size_up_right'
CURSOR_TEXT: str = 'text'
CURSOR_WAIT: str = 'wait'
CURSOR_WAIT_ARROW: str = 'wait_arrow'

类属性:窗样式

WINDOW_STYLE_BORDERLESS: str = 'borderless'
WINDOW_STYLE_DEFAULT: None = None
WINDOW_STYLE_DIALOG: str = 'dialog'
WINDOW_STYLE_OVERLAY: str = 'overlay'
WINDOW_STYLE_TOOL: str = 'tool'
WINDOW_STYLE_TRANSPARENT: str = 'transparent'
__init__(
width: int | None = None,
height: int | None = None,
caption: str | None = None,
resizable: bool = False,
style: str | None = None,
fullscreen: bool = False,
visible: bool = True,
vsync: bool = True,
file_drops: bool = False,
display: Display | None = None,
screen: Screen | None = None,
config: Config | None = None,
context: Context | None = None,
mode: ScreenMode | None = None,
) None

创建一个窗口。

所有参数都是可选的,如果未指定参数,则假设合理的默认值。

这个 displayscreenconfigcontext 参数形成控制层次结构:不需要指定多个参数。 例如,如果您指定 screen 这个 display 将被推断,并默认 configcontext 将被创建。

config 是一种特殊情况;它可以是用户创建的指定所需属性的模板,也可以是完整的 configget_matching_configs() '或类似的。

创建窗口后,上下文将立即处于活动状态,就好像 switch_to() '刚刚打电话。

参数:
  • width (int | None) -- 窗口的宽度(以像素为单位)。 默认为960,或屏幕宽度,如果 fullscreen 是真的。

  • height (int | None) -- 窗口的高度(以像素为单位)。 默认为540,或屏幕高度,如果 fullscreen 是真的。

  • caption (str | None) -- 窗口的初始标题(标题)。 默认为 sys.argv[0]

  • resizable (bool) -- 如果为True,则窗口的大小可以调整。 默认为假。

  • style (str | None) -- 之一 WINDOW_STYLE_* 指定窗口边界样式的常数。

  • fullscreen (bool) -- 如果为True,则窗口将覆盖整个屏幕而不是浮动。 默认为假。

  • visible (bool) -- 确定窗口在创建后是否立即可见。 切换到True。 如果您想在窗口显示给用户之前更改窗口的属性,请将其设置为False。

  • vsync (bool) -- 如果为True,缓冲区翻转将与主屏幕的垂直倒带同步,从而消除闪烁。

  • file_drops (bool) -- 如果为True,窗口将接受放入其中的文件并调用 on_file_drop 事件。

  • display (Display | None) -- 要使用的显示设备。 仅在X11下有用。

  • screen (Screen | None) -- 要使用的屏幕(如果是全屏)。

  • config (Config | None) -- 可以是创建完整配置的模板,也可以是完整配置。

  • context (Context | None) -- 要附加到此窗口的上下文。 上下文必须尚未附加到另一个窗口。

  • mode (ScreenMode | None) -- 如果出现以下情况,屏幕将切换到此模式 fullscreen 是真的 如果无,则选择适当的模式来适应 width``height` 。

__new__(**kwargs)
class FPSDisplay

基类:object

显示窗口的帧速率。

这是一个方便的类,可以帮助分析和调试。典型用法是创建一个 FPSDisplay ,并在窗口的末尾绘制显示。 on_draw() 事件处理程序::

from pyglet.window import Window, FPSDisplay

window = Window()
fps_display = FPSDisplay(window)

@window.event
def on_draw():
    # ... perform ordinary window drawing operations ...

    fps_display.draw()

显示的样式和位置可以通过 label 属性通过设置 update_period 属性。

__init__(
window: Window,
color: tuple[int, int, int, int] = (127, 127, 127, 127),
samples: int = 240,
) None

创建FPS显示。

参数:
  • window (Window) -- 您希望显示帧速率的窗口。

  • color (tuple[int, int, int, int]) -- 文本显示的RGBA颜色。每个通道表示为0-255。

  • samples (int) -- 使用多少个增量样本来计算平均FPS。

draw() None

画出标签。

返回类型:

None

update() None

记录当前时间的新数据点。

翻转窗口缓冲区时自动调用此方法。

返回类型:

None

label: Label

显示帧速率的文本标签。

update_period = 0.25

两次更新之间的时间(秒)。

class MouseCursor

抽象的鼠标光标。

draw(x: int, y: int) None

抽象呈现方法。

光标应绘制在给定坐标上的“热点”位置。投影被设置为pyglet缺省值(即,窗口空间中的正交性),然而,不能假定该状态的其他方面。

参数:
  • x (int) -- 鼠标指针热点的X坐标。

  • y (int) -- 鼠标指针的热点的Y坐标。

返回类型:

None

gl_drawable: bool = True

指示光标是使用OpenGL绘制的还是本机绘制的。

hw_drawable: bool = False
class DefaultMouseCursor

基类:MouseCursor

操作系统设置的默认鼠标光标。

__init__()
__new__(**kwargs)
class ImageMouseCursor

基类:MouseCursor

从图像创建的用户定义的鼠标光标。

使用此类创建您自己的鼠标光标并将其分配给窗口。光标可以由OpenGL绘制,也可以选择传递给操作系统进行本机渲染。OpenGL绘制的光标没有限制,但本机呈现的光标可能有一些平台限制(如颜色深度或大小)。通常,大小合理的游标将正确呈现

__init__(
image: AbstractImage,
hot_x: int = 0,
hot_y: int = 0,
acceleration: bool = False,
) None

从图像创建鼠标指针。

参数:
  • image (AbstractImage) -- 用于鼠标指针的图像。 它必须有有效的 texture 属性。

  • hot_x (int) -- 图像中“热点”点相对于图像锚点的X坐标。如果启用加速,可能会被夹在最大图像宽度。

  • hot_y (int) -- 图像中“热点”点相对于图像锚点的Y坐标。如果启用加速,可能会被夹在最大图像高度。

  • acceleration (bool) -- 如果 True ,本地绘制鼠标,而不是使用GL。图像可能会被缩减采样或减少颜色以适应平台限制。

draw(x: int, y: int) None

抽象呈现方法。

光标应绘制在给定坐标上的“热点”位置。投影被设置为pyglet缺省值(即,窗口空间中的正交性),然而,不能假定该状态的其他方面。

参数:
  • x (int) -- 鼠标指针热点的X坐标。

  • y (int) -- 鼠标指针的热点的Y坐标。

返回类型:

None

例外情况

class MouseCursorException

所有鼠标光标相关错误的根异常。

__init__(*args, **kwargs)
__new__(**kwargs)
class NoSuchConfigException

指示请求的配置不可用的异常。

__init__(*args, **kwargs)
__new__(**kwargs)
class NoSuchDisplayException

指示请求的显示不可用的异常。

__init__(*args, **kwargs)
__new__(**kwargs)
class WindowException

所有与窗口相关的错误的根异常。

__init__(*args, **kwargs)
__new__(**kwargs)