GUI#

arcade.gui.UIDraggableMixin#

class arcade.gui.UIDraggableMixin(x=0, y=0, width=100, height=100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[源代码]#

UIDraggableMixin可以用来制作任何 UIWidget 可拖拽的。

例如,创建一个具有背景的可拖动框架,这对于类似窗口的构造很有用:

类DraggablePane(UITexturePane,UIDraggableMixin):

..。

这确实会覆盖 UILayout 定位自己的行为,比如 UIAnchorWidget

arcade.gui.UIMouseFilterMixin#

class arcade.gui.UIMouseFilterMixin(x: float = 0, y: float = 0, width: float = 100, height: float = 100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[源代码]#

UIMouseFilterMixin 可用于捕获此小部件内发生的所有鼠标事件。

对于类似窗口的小部件非常有用, UIMouseEvents 不应触发小工具下的效果。

arcade.gui.UIWindowLikeMixin#

class arcade.gui.UIWindowLikeMixin(x=0, y=0, width=100, height=100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[源代码]#

使小部件窗口如下所示:

  • 处理小部件边界内发生的所有鼠标事件

  • 可以被拖动

arcade.gui.UIManager#

class arcade.gui.UIManager(window: Optional[arcade.application.Window] = None, auto_enable=False)[源代码]#

V2用户界面管理器

manager = UIManager()
manager.enable() # hook up window events

manager.add(Dummy())

def on_draw():
    self.clear()

    ...

    manager.draw() # draws the UI on screen
add(widget: arcade.gui.ui_manager.W, *, index=None) arcade.gui.ui_manager.W[源代码]#

将小部件添加到 UIManager 。添加的小部件将接收UI事件并呈现。

默认情况下,最新添加的小部件将首先接收UI事件,并在其他小部件上呈现。

参数
  • widget -- 要添加的小部件

  • index -- 添加微件的位置,没有优先级最高的微件

返回

小工具

adjust_mouse_coordinates(x, y)[源代码]#

此方法用于将鼠标坐标转换为与摄影机的视区和投影相关的坐标。在最常见的情况下,实现应该是可行的。

如果您在 arcade.Camera 您必须使用以下摄像机转换重置滚动或覆盖此方法:

ui_manager.adjust_mouse_coordinates = camera.mouse_coordinates_to_world
clear()[源代码]#

从UIManager中删除所有小部件

debug()[源代码]#

遍历UIManager的所有小部件并打印RECT

disable()[源代码]#

删除处理程序函数 (on_. ..)来自 arcade.Window

如果每一次 arcade.View 使用它自己的 arcade.gui.UIManager ,则应调用此方法 arcade.View.on_hide_view()

enable()[源代码]#

注册处理程序函数 (on_. ..)至 arcade.gui.UIElement

ON_DRAW未注册,以提供对绘制顺序的完全控制,因此它必须由开发人员自己调用。

get_widgets_at(pos, cls=<class 'arcade.gui.widgets.UIWidget'>) Iterable[arcade.gui.ui_manager.W][源代码]#

生成包含位置的所有小部件,返回作为CLS实例的第一个顶层小部件。

参数
  • pos -- 小部件范围内的位置

  • cls -- 小组件应该是其实例的

返回

位置上给定类型的微件的迭代器

remove(child: arcade.gui.widgets.UIWidget)[源代码]#

从UIManager中删除给定的小工具。

参数

child (UIWidget) -- 要删除的小部件

trigger_render()[源代码]#

请求呈现所有小部件

walk_widgets(*, root: Optional[arcade.gui.widgets.UIWidget] = None) Iterable[arcade.gui.widgets.UIWidget][源代码]#

按相反的绘制顺序浏览小部件树(最先绘制的小部件最多)

arcade.gui.Surface#

class arcade.gui.Surface(*, size: Tuple[int, int], position: Tuple[int, int] = (0, 0), pixel_ratio: float = 1.0)[源代码]#

持有一个 arcade.gl.Framebuffer 并将其上的图画抽象。在内部用于呈现小部件。

activate()[源代码]#

保存和恢复投影并激活要在其上绘制的曲面缓冲区。还会重置曲面(视区)的限制。

clear(color: Union[Tuple[int, int, int], List[int], Tuple[int, int, int, int]] = (0, 0, 0, 0))[源代码]#

清理表面

draw() None[源代码]#

在屏幕上绘制当前缓冲区

draw_sprite(x, y, width, height, sprite)[源代码]#

将精灵画到曲面上

limit(x, y, width, height)[源代码]#

将绘图区域缩小到给定的矩形

property position: Tuple[int, int]#

获取或设置曲面位置

resize(*, size: Tuple[int, int], pixel_ratio: float) None[源代码]#

通过重新分配新纹理来调整内部纹理的大小

参数
  • size (Tuple[int,int]) -- 以像素为单位的新大小(XY)

  • pixel_ratio (float) -- 窗口的像素比例

property size#

以窗坐标表示的曲面大小

property size_scaled#

缓冲区的物理大小

arcade.gui.UIMessageBox#

class arcade.gui.UIMessageBox(*, width: float, height: float, message_text: str, buttons=('Ok',), callback=None)[源代码]#

这是一个简单的对话框,其中弹出一条消息,其中包含关闭按钮。

参数
  • width -- 消息框的宽度

  • height -- 消息框的高度

  • message_text --

  • buttons -- 字符串列表,显示为按钮

  • callback -- 回调函数,将接收被点击按钮的文本