Skip to main content

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()

Metadata

Release files for mdi-pil 1.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mdi-pil 1.1.7
File Size Uploaded
mdi_pil-1.1.7.tar.gz 688.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mdi-pil 1.1.7
File Interpreter ABI Platform
mdi_pil-1.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / mdi_pil-1.1.7.tar.gz

Download URL mdi_pil-1.1.7.tar.gz
Size 688.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b12a83a269a6ada4368e39a0c2cd6ec2e5a315d28f1aa749055a02baa488d1b7
BLAKE2b-256 checksum
How to use checksums
4ac76a495805f1d1ede47af7bad4eeecdd480b77ff7672a891587d45c3213552
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 9, 2025.

Transparency log

Release files / mdi_pil-1.1.7-py3-none-any.whl

Download URL mdi_pil-1.1.7-py3-none-any.whl
Size 676.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76baa6004cf1de6ff2c801f622ed30ea0938b1fbe1f0a64d1d8481cdf702c628
BLAKE2b-256 checksum
How to use checksums
3ae29555f39f14fa9ee9abffc6cb563aa9cd6afbf7570dddf466a8c29c1ec23f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 9, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.7 This release

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page