displayio – 用于驱动显示器的本地助手

displayio 模块包含管理显示输出的类,包括与刷新率和部分更新同步。

在这些板上可用
  • ARAMCON Badge 2019
  • ARAMCON2 Badge
  • ATMegaZero ESP32-S2
  • Adafruit CLUE nRF52840 Express
  • Adafruit Circuit Playground Bluefruit
  • Adafruit CircuitPlayground Express with displayio
  • Adafruit EdgeBadge
  • Adafruit Feather Bluefruit Sense
  • Adafruit Feather M0 Express
  • Adafruit Feather M4 CAN
  • Adafruit Feather M4 Express
  • Adafruit Feather MIMXRT1011
  • Adafruit Feather RP2040
  • Adafruit Feather STM32F405 Express
  • Adafruit Feather nRF52840 Express
  • Adafruit FunHouse
  • Adafruit Grand Central M4 Express
  • Adafruit Hallowing M4 Express
  • Adafruit ItsyBitsy M0 Express
  • Adafruit ItsyBitsy M4 Express
  • Adafruit ItsyBitsy RP2040
  • Adafruit ItsyBitsy nRF52840 Express
  • Adafruit LED Glasses Driver nRF52840
  • Adafruit Macropad RP2040
  • Adafruit MagTag
  • Adafruit Matrix Portal M4
  • Adafruit Metro ESP32S2
  • Adafruit Metro M0 Express
  • Adafruit Metro M4 Airlift Lite
  • Adafruit Metro M4 Express
  • Adafruit Metro nRF52840 Express
  • Adafruit Monster M4SK
  • Adafruit PyGamer
  • Adafruit PyPortal
  • Adafruit PyPortal Pynt
  • Adafruit PyPortal Titano
  • Adafruit Pybadge
  • Adafruit QT Py M0 Haxpress
  • Adafruit QT Py RP2040
  • Adafruit QT2040 Trinkey
  • Adafruit Trellis M4 Express
  • AloriumTech Evo M51
  • Arduino Nano 33 BLE
  • Arduino Nano RP2040 Connect
  • Artisense Reference Design RD00
  • AtelierDuMaker nRF52840 Breakout
  • BDMICRO VINA-D21
  • BDMICRO VINA-D51
  • BLE-SS dev board Multi Sensor
  • BastBLE
  • BastWiFi
  • BlueMicro840
  • CP Sapling M0 w/ SPI Flash
  • CP32-M4
  • Capable Robot Programmable USB Hub
  • Cedar Grove StringCar M0 Express
  • Challenger RP2040 WiFi
  • CircuitBrains Basic
  • CircuitBrains Deluxe
  • CrumpS2
  • Cytron Maker Pi RP2040
  • DynOSSAT-EDU-EPS
  • DynOSSAT-EDU-OBC
  • ESP 12k NodeMCU
  • Electronic Cats Hunter Cat NFC
  • Electronut Labs Blip
  • Electronut Labs Papyr
  • EncoderPad RP2040
  • Espruino Pico
  • Espruino Wifi
  • Feather ESP32S2 without PSRAM
  • Feather MIMXRT1011
  • Feather MIMXRT1062
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • Hacked Feather M0 Express with 8Mbyte SPI flash
  • HalloWing M0 Express
  • HiiBot BlueFi
  • IMXRT1010-EVK
  • IkigaiSense Vita nRF52840
  • Kaluga 1
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • MDBT50Q-DB-40
  • MDBT50Q-RX Dongle
  • MEOWBIT
  • MORPHEANS MorphESP-240
  • MakerDiary nRF52840 MDK
  • MakerDiary nRF52840 MDK USB Dongle
  • Makerdiary M60 Keyboard
  • Makerdiary Pitaya Go
  • Makerdiary nRF52840 M.2 Developer Kit
  • Melopero Shake RP2040
  • Metro MIMXRT1011
  • Mini SAM M4
  • NUCLEO STM32F746
  • NUCLEO STM32F767
  • NUCLEO STM32H743
  • OPENMV-H7 R1
  • Oak Dev Tech BREAD2040
  • Oak Dev Tech PixelWing ESP32S2
  • Open Hardware Summit 2020 Badge
  • PCA10056 nRF52840-DK
  • PCA10059 nRF52840 Dongle
  • PYB LR Nano V2
  • Particle Argon
  • Particle Boron
  • Particle Xenon
  • PewPew M4
  • Pimoroni Interstate 75
  • Pimoroni Keybow 2040
  • Pimoroni PGA2040
  • Pimoroni Pico LiPo (16MB)
  • Pimoroni Pico LiPo (4MB)
  • Pimoroni PicoSystem
  • Pimoroni Plasma 2040
  • Pimoroni Tiny 2040
  • PyKey60
  • PyboardV1_1
  • Raspberry Pi Pico
  • S2Mini
  • SAM E54 Xplained Pro
  • SAM32v26
  • ST STM32F746G Discovery
  • STM32F411E_DISCO
  • STM32F412G_DISCO
  • STM32F4_DISCO
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • Seeeduino Wio Terminal
  • Serpente
  • Silicognition LLC M4-Shim
  • SparkFun LUMIDrive
  • SparkFun MicroMod RP2040 Processor
  • SparkFun MicroMod SAMD51 Processor
  • SparkFun MicroMod nRF52840 Processor
  • SparkFun Pro Micro RP2040
  • SparkFun Pro nRF52840 Mini
  • SparkFun RedBoard Turbo
  • SparkFun STM32 MicroMod Processor
  • SparkFun Thing Plus - RP2040
  • SparkFun Thing Plus - SAMD51
  • StackRduino M0 PRO
  • TG-Boards' Datalore IP M4
  • TG-Watch
  • THUNDERPACK_v11
  • THUNDERPACK_v12
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • Teensy 4.0
  • Teensy 4.1
  • Teknikio Bluebird
  • The Open Book Feather
  • TinkeringTech ScoutMakes Azul
  • TinyS2
  • Trinket M0 Haxpress
  • UARTLogger II
  • WarmBit BluePixel nRF52840
  • iMX RT 1020 EVK
  • iMX RT 1060 EVK
  • keithp.com snekboard
  • microS2
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom
  • nice!nano
  • stm32f411ce-blackpill
  • stm32f411ce-blackpill-with-flash
  • uGame10

displayio.release_displays()None

释放任何活跃使用​​的显示器,以便它们的总线和引脚可以再次使用。这也将在具有内置显示器的板上释放内置显示器。之后您需要自己重新初始化它。如果活动的 EPaperDisplay 正在刷新,这可能需要几秒钟才能完成。

如果您初始化显示,请在您的 code.py 中使用一次。将它放在初始化之前,以便显示器尽可能长时间处于活动状态。

class displayio.Colorspace

用于ColorConverter 操作的色彩空间

RGB888 :Colorspace

标准的 24 位色彩空间。0-7 位为蓝色,8-15 位为绿色,16-24 位为红色。(0xRRGGBB)

RGB565 :Colorspace

标准的 16 位色彩空间。位 0-4 为蓝色,位 5-10 为绿色,位 11-15 为红色 (0bRRRRRGGGGGGBBBBB)

RGB565_SWAPPED :Colorspace

交换的 16 位色彩空间。首先将数字的高低8位交换,然后将它们解释为RGB565

RGB555 :Colorspace

标准的 15 位色彩空间。0-4 位为蓝色,5-9 位为绿色,11-14 位为红色。最高位被忽略。(0bxRRRRGGGGGBBBBB)

RGB555_SWAPPED :Colorspace

交换的 15 位色彩空间。首先将数字的高低8位交换,然后将它们解释为RGB555

class displayio.Bitmap(width: int, height: int, value_count: int)

将特定大小的值存储在二维数组中

位图可以被视为只读缓冲区。如果一个像素的位数为 8、16 或 32;并且每行的字节数是 4 的倍数,那么生成的 memoryview 将直接与位图的内容相对应。否则,位图数据将使用未指定的填充打包到内存视图中。

位图可以被视为缓冲区,允许使用例如 with 来查看和修改其内容ulab.numpy.frombuffer,但是 displayio.Bitmap.dirty当位图通过缓冲区接口修改时,必须使用该方法通知 displayio。

bitmaptools.arrayblit 也可用于有效地将数据移动到位图。

创建一个具有给定固定大小的 Bitmap 对象。每个像素存储一个值,用于索引到相应的调色板。这使不同颜色的精灵能够共享底层位图。value_count 用于最小化用于存储位图的内存。

参数
  • width (int) – 宽值的数量

  • height (int) – 高值的数量

  • value_count (int) – 可能的像素值的数量。

width :int

位图的宽度。(只读)

height :int

位图的高度。(只读)

__getitem__(self, index: Union[Tuple[int, int], int])int

返回给定索引处的值。索引可以是 x,y 元组或等于y * width + x.

这允许您:

print(bitmap[0,1])
__setitem__(self, index: Union[Tuple[int, int], int], value: int)None

设置给定索引处的值。索引可以是 x,y 元组或等于y * width + x.

这允许您:

bitmap[0,1] = 3
blit(self, x: int, y: int, source_bitmap: Bitmap, *, x1: int, y1: int, x2: int, y2: int, skip_index: int)None
插入由矩形边界定义的 source_bitmap 区域

(x1,y1) 和 (x2,y2) 到指定 (x,y) 位置的位图。

参数
  • x (int) – 位图中将放置 source_bitmap 左上角的水平像素位置

  • y (int) – 位图中将放置 source_bitmap 左上角的垂直像素位置

  • source_bitmap (bitmap) – 包含要复制的图形区域的源位图

  • x1 (int) – 要从源位图复制的矩形边界框的最小 x 值

  • y1 (int) – 要从源位图复制的矩形边界框的最小 y 值

  • x2 (int) – 要从源位图复制的矩形边界框的最大 x 值(不包括)

  • y2 (int) – 要从源位图复制的矩形边界框的最大 y 值(不包括)

  • skip_index (int) – 源中不会被复制的位图调色板索引,设置为 None 以复制所有像素

fill(self, value: int)None

用提供的调色板索引值填充位图。

dirty(self, x1: int = 0, y1: int = 0, x2: int = - 1, y2: int = - 1)None

通过缓冲协议通知显示位图更新。

参数
  • x1 (int) – 被视为修改的矩形边界框的最小 x 值

  • y1 (int) – 被视为已修改的矩形边界框的最小 y 值

  • x2 (int) – 被视为修改的矩形边界框的最大 x 值(不包括)

  • y2 (int) – 矩形边界框的最大 y 值(不包括)被视为已修改

如果未指定 x1 或 y1,则取为 0。如果未指定 x2 或 y2,或指定为 -1,则取为图像的宽度和高度。因此,使用默认参数调用dirty() 会将整个位图视为已修改。

当通过缓冲协议修改位图时,除非通知位图包含所有修改像素的“脏矩形”,否则显示将不会正确更新。

class displayio.ColorConverter(*, colorspace: Colorspace = Colorspace.RGB888, dither: bool = False)

将一种颜色格式转换为另一种颜色格式。

创建一个 ColorConverter 对象来转换颜色格式。

参数
  • 颜色空间 (Colorspace) – 源颜色空间,颜色空间常量之一

  • 抖动 (bool) – 添加随机噪声以抖动输出图像

dither :bool

True ColorConverter 在截断以显示位深度时通过添加随机噪声来抖动输出

convert(self, color: int)int

根据颜色空间将给定的颜色转换为 RGB565

make_transparent(self, color: int)None

为 ColorConverter 设置透明颜色或索引。如果已经有一个选定的透明索引,这将引发异常。

参数

color (int) – 要透明的颜色

make_opaque(self, color: int)None

使 ColorConverter 不透明且没有透明像素。

参数

color (int) – [IGNORED] 使用任何值

displayio._DisplayBus

FourWire, paralleldisplay.ParallelBusI2CDisplay

class displayio.Display(display_bus: _DisplayBus, init_sequence: _typing.ReadableBuffer, *, width: int, height: int, colstart: int = 0, rowstart: int = 0, rotation: int = 0, color_depth: int = 16, grayscale: bool = False, pixels_in_byte_share_row: bool = True, bytes_per_cell: int = 1, reverse_pixels_in_byte: bool = False, set_column_command: int = 42, set_row_command: int = 43, write_ram_command: int = 44, backlight_pin: Optional[microcontroller.Pin] = None, brightness_command: Optional[int] = None, brightness: float = 1.0, auto_brightness: bool = False, single_byte_bounds: bool = False, data_as_commands: bool = False, auto_refresh: bool = True, native_frames_per_second: int = 60, backlight_on_high: bool = True, SH1107_addressing: bool = False)

管理通过显示总线更新显示

这将初始化一个显示并将其连接到 CircuitPython。与 CircuitPython 中的其他对象不同,Display 对象在displayio.release_displays() 被调用之前一直存在。这样做是为了让 CircuitPython 可以使用显示本身。

大多数人不应该直接使用这个类。请改用特定的显示驱动程序,该驱动程序至少包含初始化序列。

在给定的显示总线(FourWire, ParallelBusI2CDisplay)上创建一个 Display 对象。

init_sequence是位打包的,以最大限度地减少 ram 的影响。每个命令都以命令字节开始,后跟一个字节以确定参数计数和延迟。当第二个字节的最高位为 1(0x80)时,命令参数发送后会发生延迟。其余 7 位是不包括任何延迟字节的参数计数。后面的字节是参数。设置延迟位后,参数后的单个字节指定以毫秒为单位的延迟持续时间。值 0xff 将导致额外的 500 毫秒延迟而不是 255 毫秒。下一个字节将开始一个新的命令定义。下面是一个例子:

init_sequence = (b"\xe1\x0f\x00\x0E\x14\x03\x11\x07\x31\xC1\x48\x08\x0F\x0C\x31\x36\x0F" # Set Gamma
                 b"\x11\x80\x78"# Exit Sleep then delay 0x78 (120ms)
                 b"\x29\x81\xaa\x78"# Display on then delay 0x78 (120ms)
                )
 display = displayio.Display(display_bus, init_sequence, width=320, height=240)

第一个命令是 0xe1,后面有 15 个 (0xf) 参数。第二个是带有 0 个参数和 120ms (0x78) 延迟的 0x11。第三个命令是 0x29,带有一个参数 0xaa 和 120 毫秒的延迟(0x78)。多个字节文字 (b"") 在加载时合并在一起。需要括号以在后续行中允许字节文字。

初始化序列应始终使显示内存访问与显示扫描保持一致,以最大限度地减少撕裂伪影。

参数
  • display_bus – 显示器连接到的总线

  • init_sequence (ReadableBuffer) – 字节打包的初始化序列。

  • width (int) – 宽度(以像素为单位)

  • height (int) – 以像素为单位的高度

  • colstart (int) – 如果第一个可见列的索引

  • rowstart (int) – 第一个可见行的索引

  • rotation (int) – 显示顺时针旋转度数。必须以 90 度为增量(0、90、180、270)

  • color_depth (int) – 传输的每个像素的颜色位数。(有些显示器支持 18 位,但 16 位更容易传输。最后一位是外推的。)

  • grayscale (bool) – 如果显示器只显示一种颜色,则为真。

  • pixels_in_byte_share_row (bool) – 当像素小于一个字节并且一个字节包含来自显示器同一行的像素时为真。当为 False 时,像素共享一列。

  • bytes_per_cell (int) – 当 color_depth < 8 时每个可寻址内存位置的字节数。当大于 1 时,字节根据 pixel_in_byte_share_row 共享行或列。

  • reverse_pixels_in_byte (bool) – 当 color_depth < 8 时反转每个字节内的像素顺序。即使每个单元格有多个字节 (bytes_per_cell.) 也不适用于多个字节。

  • reverse_bytes_in_word (bool) – 当 color_depth == 16 时反转单词中的字节顺序

  • set_column_command (int) – 用于设置要更新的开始和结束列的命令

  • set_row_command (int) – 使用的命令设置要更新的开始和结束行

  • write_ram_command (int) – 用于将像素值写入更新区域的命令。如果设置了 data_as_commands,则忽略。

  • backlight_pin (microcontroller.Pin) – 连接到显示器背光的引脚

  • brightness_command (int) – 设置显示亮度的命令。通常可用于 OLED 控制器。

  • brightness (float) – 初始显示亮度。如果 auto_brightness 为 True,则忽略此值。

  • auto_brightness (bool) – 如果为 True,则通过环境光传感器或其他机制控制亮度。

  • single_byte_bounds (bool) – 显示列和行命令使用单个字节

  • data_as_commands (bool) – 将所有初始化和边界数据视为 SPI 命令。某些显示器需要这样做。

  • auto_refresh (bool) – 自动刷新屏幕

  • native_frames_per_second (int) – 给定 init_sequence 每秒发生的显示刷新次数。

  • backlight_on_high (bool) – 如果为 True,拉高背光引脚会打开背光。

  • SH1107_addressing (bool) – SH1107 的特殊特性,使用上/下列集和页集

  • set_vertical_scroll (int) – 该参数被接受,但为了向后兼容而被忽略。它将在将来的版本中删除。

auto_refresh :bool

当显示自动刷新时为真。

brightness :float

显示的亮度为浮点数。0.0 表示关闭,1.0 表示全亮度。当 auto_brightness为 True 时, 的值brightness 会自动改变。如果brightness 设置,auto_brightness 将被禁用并设置为 False。

auto_brightness :bool

当显示亮度根据环境光传感器或其他方法自动调整时为真。请注意,某些显示器可能默认将此设置为 True,但实际上并未实现自动亮度调整。auto_brightness如果 brightness 手动设置,则设置为 False 。

width :int

获取板的宽度

height :int

获取板的高度

rotation :int

以度为单位的整数形式的显示旋转。

bus :_DisplayBus

显示器使用的总线

show(self, group: Group)None

切换到显示给定的图层组。当 group 为 None 时,将显示默认的 CircuitPython 终端。

参数

group (Group) – 要显示的组。

refresh(self, *, target_frames_per_second: Optional[int] = None, minimum_frames_per_second: int = 0)bool

当 auto_refresh 关闭时,这target_frames_per_second不是None等待目标帧率然后刷新显示,返回True. 如果自上次针对给定目标帧速率的刷新调用以来调用时间过长,则刷新会False立即返回而不更新屏幕,希望有助于赶上进度。

如果自上次成功刷新以来的时间低于最小帧速率,则会引发异常。默认值minimum_frames_per_second 0 禁用此行为。

当自动刷新处于关闭状态,并且target_frames_per_secondNone该会立即更新显示。

当 auto_refresh 打开时,立即更新显示。(显示也将更新而不调用此。)

参数
  • target_frames_per_second (Optional[int]) – refresh() 应该尝试达到的目标帧率。设置None 为立即刷新。

  • minimum_frames_per_second (int) – 屏幕每秒应更新的最小次数。

fill_row(self, y: int, buffer: _typing.WriteableBuffer)_typing.WriteableBuffer

从单行中提取像素

参数
  • y (int) – 区域的上边缘

  • buffer (WriteableBuffer) – 放置像素数据的缓冲区

class displayio.EPaperDisplay(display_bus: _DisplayBus, start_sequence: _typing.ReadableBuffer, stop_sequence: _typing.ReadableBuffer, *, width: int, height: int, ram_width: int, ram_height: int, colstart: int = 0, rowstart: int = 0, rotation: int = 0, set_column_window_command: Optional[int] = None, set_row_window_command: Optional[int] = None, set_current_column_command: Optional[int] = None, set_current_row_command: Optional[int] = None, write_black_ram_command: int, black_bits_inverted: bool = False, write_color_ram_command: Optional[int] = None, color_bits_inverted: bool = False, highlight_color: int = 0, refresh_display_command: int, refresh_time: float = 40, busy_pin: Optional[microcontroller.Pin] = None, busy_state: bool = True, seconds_per_frame: float = 180, always_toggle_chip_select: bool = False, grayscale: bool = False)

管理通过显示总线更新电子纸显示

这将初始化一个电子纸显示器并将其连接到 CircuitPython。与 CircuitPython 中的其他对象不同,EPaperDisplay 对象在displayio.release_displays() 被调用之前一直存在。这样做是为了让 CircuitPython 可以使用显示本身。

大多数人不应该直接使用这个类。请改用特定的显示驱动程序,该驱动程序至少包含启动和关闭序列。

在给定的显示总线(displayio.FourWireparalleldisplay.ParallelBus)上创建一个 EPaperDisplay 对象。

start_sequencestop_sequence被bitpacked,以尽量减少冲击夯。每个命令都以命令字节开始,后跟一个字节以确定参数计数和延迟。当第二个字节的最高位为 1(0x80)时,命令参数发送后会发生延迟。其余 7 位是不包括任何延迟字节的参数计数。后面的字节是参数。设置延迟位后,参数后的单个字节指定以毫秒为单位的延迟持续时间。值 0xff 将导致额外的 500 毫秒延迟而不是 255 毫秒。下一个字节将开始一个新的命令定义。

参数
  • display_bus – 显示器连接到的总线

  • start_sequence (ReadableBuffer) – 字节打包的初始化序列。

  • stop_sequence (ReadableBuffer) – 字节打包的初始化序列。

  • width (int) – 宽度(以像素为单位)

  • height (int) – 以像素为单位的高度

  • ram_width (int) – 以像素为单位的 RAM 宽度

  • ram_height (int) – 以像素为单位的 RAM 高度

  • colstart (int) –如果第一个可见列的索引

  • rowstart (int) – 第一个可见行的索引

  • rotation (int) – 显示顺时针旋转度数。必须以 90 度为增量(0、90、180、270)

  • set_column_window_command (int) – 用于设置要更新的开始和结束列的命令

  • set_row_window_command (int) – 使用的命令设置要更新的开始和结束行

  • set_current_column_command (int) – 用于设置当前列位置的命令

  • set_current_row_command (int) – 用于设置当前行位置的命令

  • write_black_ram_command (int) – 用于将像素值写入更新区域的命令

  • black_bits_inverted (bool) – 如果 0 位用于显示黑色像素,则为真。否则,1 表示显示黑色。

  • write_color_ram_command (int) – 用于将像素值写入更新区域的命令

  • color_bits_inverted (bool) – 如果使用 0 位来显示颜色,则为真。否则,1 表示显示颜色。

  • highlight_color (int) – 源颜色的 RGB888,用第三种电子纸颜色突出显示。

  • refresh_display_command (int) – 用于启动显示刷新的命令

  • refresh_time (float) – 在发送 stop_sequence 之前刷新显示所需的时间。提供busy_pin 时忽略。

  • busy_pin (microcontroller.Pin) –—用于表示显示器繁忙的引脚

  • busy_state (bool) – 显示器忙时忙引脚的状态

  • seconds_per_frame (float) – 屏幕刷新之间的最小秒数

  • always_toggle_chip_select (bool) – 当为 True 时,芯片选择每字节切换一次

  • grayscale (bool) – 当为真时,颜色 ram 是 2 位灰度的低位

time_to_refresh :float

电子纸显示可以刷新之前的时间(以秒为单位)。

busy :bool

显示刷新时为真。这使用busy_pin 可用时或 refresh_time其他情况。

width :int

获取以像素为单位的显示宽度

height :int

获取以像素为单位的显示高度

rotation :int

以度为单位的整数形式的显示旋转。

bus :_DisplayBus

显示器使用的总线

show(self, group: Group)None

切换到显示给定的图层组。当 group 为 None 时,将显示默认的 CircuitPython 终端。

参数

group (Group) – 要显示的组。

update_refresh_mode(self, start_sequence: _typing.ReadableBuffer, seconds_per_frame: float = 180)None

更新start_sequenceseconds_per_frame 参数以启用改变显示器的刷新模式。

refresh(self)None

立即刷新显示,如果太快则引发异常。使用 time.sleep(display.time_to_refresh)休眠状态,直到可能发生刷新。

class displayio.FourWire(spi_bus: busio.SPI, *, command: microcontroller.Pin, chip_select: microcontroller.Pin, reset: Optional[microcontroller.Pin] = None, baudrate: int = 24000000, polarity: int = 0, phase: int = 0)

在 Python 代码运行时管理在后台通过 SPI 四线协议更新显示。它不处理显示初始化。

创建与给定引脚关联的 FourWire 对象。

SPI 总线和引脚然后由显示器使用,直到displayio.release_displays() 即使在重新加载后也被调用。(这样做是为了 CircuitPython 可以在您的代码完成后使用显示。)因此,第一次在 code.py 中初始化显示总线时,您应该 displayio.release_displays() 先调用 ,否则在第一次 code.py 运行后会出错。

参数
  • spi_bus (busio.SPI) – T构成时钟和数据线的 SPI 总线

  • command (microcontroller.Pin) – 数据或命令引脚

  • chip_select (microcontroller.Pin) –芯片选择引脚

  • reset (microcontroller.Pin) – 重置引脚。当 None 时,只能使用软件复位

  • baudrate (int) – 总线上显示的最大波特率 (Hz)

  • polarity (int) – 时钟线的基本状态(0 或 1)

  • phase (int) – 捕获数据的时钟边沿。第一个 (0) 或第二个 (1)。上升或下降取决于时钟极性。

reset(self)None

通过复位引脚执行硬件复位。如果在没有复位引脚可用时调用,则引发异常。

send(self, command: int, data: _typing.ReadableBuffer, *, toggle_every_byte: bool = False)None

发送给定的命令值,后跟完整的数据集。send 一旦代码完成,显示状态,例如垂直滚动,通过设置可能会或可能不会重置。

class displayio.Group(*, scale: int = 1, x: int = 0, y: int = 0)

管理一组精灵和组以及它们如何相互关联。

创建一个给定大小和比例的组。尺度是一维的。例如, scale=2 导致图层的像素在组中时为 2x2 像素。

参数
  • scale (int) – 一维图层像素的比例。

  • x (int) – 父级中的初始 x 位置。

  • y (int) – 父级中的初始 y 位置。

hidden :bool

当组及其所有图层不可见时为真。当为 False 时,如果组的图层未被隐藏,则它们是可见的。

scale :int

在两个方向上缩放组内的每个像素。例如,当 scale=2 时,每个像素将由 2x2 像素表示。

x :int

组在父级中的 X 位置。

y :int

组在父级中的 Y 位置。

append(self, layer: Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid])None

将图层附加到组。它将绘制在其他图层之上。

insert(self, index: int, layer: Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid])None

在组中插入一个图层。

index(self, layer: Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid])int

返回第一个图层副本的索引。如果未找到,则引发 ValueError。

pop(self, i: int = - 1)Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid]

删除第 i 个项目并返回它。

remove(self, layer: Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid])None

删除图层的第一个副本。如果不存在则引发 ValueError。

__bool__(self)bool
__len__(self)int

返回组中的层数

__getitem__(self, index: int)Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid]

返回给定索引处的值。

这允许您:

print(group[0])
__setitem__(self, index: int, value: Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid])None

设置给定索引处的值。

这允许您:

group[0] = sprite
__delitem__(self, index: int)None

删除给定索引处的值。

这允许您:

del group[0]
sort(self, key: function, reverse: bool)None

对组的成员进行排序。

class displayio.I2CDisplay(i2c_bus: busio.I2C, *, device_address: int, reset: Optional[microcontroller.Pin] = None)

在 Python 代码运行时管理在后台通过 I2C 更新显示。它不处理显示初始化。

创建与给定 I2C 总线和复位引脚关联的 I2CDisplay 对象。

I2C 总线和引脚随后由显示器使用,直到 displayio.release_displays()重新加载后才被调用。(这样做是为了 CircuitPython 可以在您的代码完成后使用显示。)因此,第一次在 code.py 中初始化显示总线时,您应该 displayio.release_displays() 先调用 ,否则在第一次 code.py 运行后会出错。

参数
  • i2c_bus (busio.I2C) – 构成时钟和数据线的 I2C 总线

  • device_address (int) – 设备的 I2C 地址

  • reset (microcontroller.Pin) – 重置引脚。当 None 时,只能使用软件复位

reset(self)None

通过复位引脚执行硬件复位。如果在没有复位引脚可用时调用,则引发异常。

send(self, command: int, data: _typing.ReadableBuffer)None

发送给定的命令值,后跟完整的数据集。send 一旦代码完成,显示状态,例如垂直滚动,通过设置可能会或可能不会重置。

class displayio.OnDiskBitmap(file: Union[str, BinaryIO])

直接从磁盘加载值。这最大限度地减少了内存使用,但会导致像素加载时间变慢。这些加载时间可能会导致仅部分图像可见的帧撕裂。

它最容易在带有内置显示器的板上使用,例如 Hallowing M0 Express.

import board
import displayio
import time
import pulseio

board.DISPLAY.auto_brightness = False
board.DISPLAY.brightness = 0
splash = displayio.Group()
board.DISPLAY.show(splash)

odb = displayio.OnDiskBitmap('/sample.bmp')
face = displayio.TileGrid(odb, pixel_shader=odb.pixel_shader)
splash.append(face)
# Wait for the image to load.
board.DISPLAY.refresh(target_frames_per_second=60)

# Fade up the backlight
for i in range(100):
    board.DISPLAY.brightness = 0.01 * i
    time.sleep(0.05)

# Wait forever
while True:
    pass

使用给定的文件创建一个 OnDiskBitmap 对象。

参数

file (file) – 位图文件的名称。为了向后兼容,还可以传递以二进制模式打开的文件。

旧版本的 CircuitPython 需要一个以二进制模式打开的文件。CircuitPython 7.0 修改了 OnDiskBitmap 以便它采用文件名,并在内部打开文件。未来版本的 CircuitPython 将删除传递打开文件的功能。

width :int

位图的宽度。(只读)

height :int

位图的高度。(只读)

pixel_shader :Union[ColorConverter, Palette]

图像的 pixel_shader。类型取决于底层位图的结构。可以修改像素着色器(例如,设置透明像素,或者对于调色板图像,更新调色板

class displayio.Palette(color_count: int)

将像素调色板索引映射到全色。颜色在内部转换为显示器的格式以节省内存。

创建一个 Palette 对象来存储一定数量的颜色。

参数

color_count (int) – 调色板中的颜色数量

__bool__(self)bool
__len__(self)int

返回调色板中的颜色数

__getitem__(self, index: int)Optional[int]

以整数形式返回给定索引处的像素颜色。

__setitem__(self, index: int, value: Union[int, _typing.ReadableBuffer, Tuple[int, int, int]])None

设置给定索引处的像素颜色。索引应该是 0 到 color_count-1 范围内的整数。

value 参数代表一种颜色,可以从 0x000000 到 0xFFFFFF(代表一个 RGB 值)。值可以是 int、字节(3 个字节 (RGB) 或 4 个字节(RGB + 填充字节))、字节数组或 3 个整数的元组或列表。

这允许您:

palette[0] = 0xFFFFFF                     # set using an integer
palette[1] = b'\xff\xff\x00'              # set using 3 bytes
palette[2] = b'\xff\xff\x00\x00'          # set using 4 bytes
palette[3] = bytearray(b'\x00\x00\xFF')   # set using a bytearay of 3 or 4 bytes
palette[4] = (10, 20, 30)                 # set using a tuple of 3 integers
make_transparent(self, palette_index: int)None
make_opaque(self, palette_index: int)None
is_transparent(self, palette_index: int)bool

返回True 调色板索引是否透明。 False 如果不透明则返回。

class displayio.Shape(width: int, height: int, *, mirror_x: bool = False, mirror_y: bool = False)

表示通过定义可以镜像的边界制成的形状。

创建具有给定固定大小的 Shape 对象。每个像素是一位,并由每行形状的列边界存储。每行的边界默认为整行。

参数
  • width (int) – 像素宽度

  • height (int) – 高像素数

  • mirror_x (bool) –当为 true 时,左边界被镜像到右侧。

  • mirror_y (bool) –当为 true 时,顶部边界被镜像到底部。

set_boundary(self, y: int, start_x: int, end_x: int)None

将预先打包的数据加载到给定的行中。

class displayio.TileGrid(bitmap: Union[Bitmap, OnDiskBitmap, Shape], *, pixel_shader: Union[ColorConverter, Palette], width: int = 1, height: int = 1, tile_width: Optional[int] = None, tile_height: Optional[int] = None, default_tile: int = 0, x: int = 0, y: int = 0)

源自一个位图的图块网格

定位源自位图和 pixel_shader 组合的图块网格。多个网格可以共享位图和像素着色器。

单个图块网格也称为 Sprite。

创建一个 TileGrid 对象。位图是 2d 像素的源。pixel_shader 用于将值及其位置转换为显示本机像素颜色。这可能是简单的调色板查找、渐变、图案或颜色转换器。

tile_width 和 tile_height 默认匹配位图的高度。

参数
  • bitmap (Bitmap,OnDiskBitmap,Shape) – 存储一个或多个图块的位图。

  • pixel_shader (ColorConverter,Palette) – 从值产生颜色的像素着色器

  • width (int) – 以瓷砖为单位的网格宽度。

  • height (int) – 以瓷砖为单位的网格高度。

  • tile_width (int) – 单个图块的宽度(以像素为单位)。默认为完整位图,并且必须均匀划分为位图的维度。

  • tile_height (int) – 单个图块的高度(以像素为单位)。默认为完整位图,并且必须均匀划分为位图的维度。

  • default_tile (int) – 要显示的默认图块索引。

  • x (int) – 父项中左边缘的初始 x 位置。

  • y (int) – 父级中顶部边缘的初始 y 位置。

hidden :bool

当 TileGrid 隐藏时为真。即使是隐藏组的一部分,这也可能是 False。

x :int

父中左边缘的 X 位置。

y :int

父项中顶边的 Y 位置。

flip_x :bool

如果为 true,则渲染的左边缘将是最右侧图块的右边缘。

flip_y :bool

如果为 true,则渲染的顶部边缘将是最底部图块的底部边缘。

transpose_xy :bool

如果为 true,TileGrid 的轴将被交换。与镜像结合使用时,可以与相应的镜像版本一起实现任意 90 度旋转。

pixel_shader :Union[ColorConverter, Palette]

tilegrid 的像素着色器。

__getitem__(self, index: Union[Tuple[int, int], int])int

返回给定索引处的图块索引。索引可以是 x,y 元组或等于y * width + x.

这允许您:

print(grid[0])
__setitem__(self, index: Union[Tuple[int, int], int], value: int)None

在给定索引处设置图块索引。索引可以是 x,y 元组或等于.y * width + x.

这允许您:

grid[0] = 10

或者:

grid[0,0] = 10