Skip to main content

A library to draw MDI icons onto PIL Image objects.

Project description

MDI PIL

This is a small library made to easily generate PIL Image objects of mdi (Material Design Icon) icons. It also comes with a tool to convert user supplied image files into image objects that adhere to the main sizing principles of mdi icons. There are also two additional functions, parse_weather_icon and make_battery_icon. The former returns a string with the mdi icon corresponding to a given weather condition. The latter creates an image that is similar to the icon showing the battery status in phones, with additional options like fill icons and the like. See the doc strings of those functions for how they work.

To see a project using both implementations, check out inkBoard Designer. It uses PythonScreenStackManager for the actual dashboards (which is what this module was originally written for), and the UI makes heavy use of the ttkbootstrap module (and it is also where the idea for that module was born).

Install

pip install mdi-pil

Examples

Make a PIL image object with the icon "mdi:test-tube" and open a window to show it:

from PIL import Image
import mdi_pil as mdi

icon = "mdi:test-tube"
img = Image.new("RGBA", (100,100), None)

img = mdi.draw_mdi_icon(img, icon, icon_color="steelblue")
img.show()

Convert the image file "speaker-outline.png" into an mdi-like icon:

from PIL import Image
import mdi_pil as mdi

img = "speaker-outline.png"

img = mdi.make_mdi_icon(img, 100, color="steelblue")
img.show()

ttkbootstrap

Version 1.1.0 comes with an optional extension to use MDI icons in tkinter interfaces. To have functional theming, the ttkbootstrap package is used.

installation: pip install mdi-pil[ttkbootstrap] (If ttkbootstrap is not yet installed)

Usage:

The classes return PhotoImage objects, so they are used in the same way you'd use a PIL.ImageTk.PhotoImage.

For more info on styling than is in the docstrings, look at the documentation for ttkbootstrap and tkinter itself.

A very rudimentary example is below, which can be run as is:

from ttkbootstrap import Window, Button
from mdi_pil.ttkbootstrap_mdi import MDIIcon, MDIButton

window_size = (750,200)
root = Window(size=window_size)

KEEP = []   ##Images need to be saved somewhere to prevent garbage collecion

icon = "mdi:test-tube"
icon_size = int(window_size[1]/2)
imgTk = MDIIcon(icon, (100,100), bootstyle="info")
iconWidget = Button(root,image=imgTk, cursor="hand2", 
                        width=100, padding=-1
                        )
KEEP.append(imgTk)
iconWidget.pack()

icon = "mdi:earth"
text = "Hello World!"
button_size = (window_size[0],int(window_size[1]/2))
imgTk = MDIButton(icon, text, button_size, bootstyle="success")
buttonWidget = Button(root,image=imgTk, cursor="hand2")
KEEP.append(imgTk)
buttonWidget.pack()

root.mainloop()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mdi_pil-1.1.4.tar.gz (688.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdi_pil-1.1.4-py3-none-any.whl (676.3 kB view details)

Uploaded Python 3

File details

Details for the file mdi_pil-1.1.4.tar.gz.

File metadata

  • Download URL: mdi_pil-1.1.4.tar.gz
  • Upload date:
  • Size: 688.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for mdi_pil-1.1.4.tar.gz
Algorithm Hash digest
SHA256 6acf10855c7c9ec8e4b4175e70fcac6dc8d3adc80141e4c18de9ac6cda18b950
MD5 fddefecdc1bb5a24b2e33eec70b7eac1
BLAKE2b-256 a586b8aa837975294f4681b5c90217e050a7703f8766e44baee84fecaa411c4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdi_pil-1.1.4.tar.gz:

Publisher: publish.yml on Slalamander/mdi_pil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mdi_pil-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: mdi_pil-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 676.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for mdi_pil-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c23c8273100f4746d465c4e85a4b6d3e87a1560b26f850c81a27627ce3ad913d
MD5 8cea9782a3d500b590b6163e73d77720
BLAKE2b-256 0f3f9fe51e0b47005148523a3bcbccdf0fb6c2985fcfc276299d9d6eda09afb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdi_pil-1.1.4-py3-none-any.whl:

Publisher: publish.yml on Slalamander/mdi_pil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page