Skip to content

niklashenning/pytablericons

Repository files navigation

pytablericons

PyPI Python Build Coverage License

Python wrapper for the Tabler Icons library - a set of 5237 free MIT-licensed high-quality SVG icons for you to use in your python projects

Browse at tabler-icons.io →

pytablericons

Features

  • 5237 free MIT-licensed high-quality SVG icons
  • Load icons into Pillow Image with custom size, color, and stroke width
  • Supports IDE autocompletion
  • Works cross-platform without any extra dependencies
  • Easy to use with Pillow, PyQt5, PyQt6, PySide2, PySide6, Tkinter, etc.

Installation

pip install pytablericons

Usage

Import TablerIcons and call the static load() method with the desired OutlineIcon or FilledIcon:

from pytablericons import TablerIcons, OutlineIcon, FilledIcon

icon_rotate = TablerIcons.load(OutlineIcon.ROTATE)      # Outline icon
icon_check = TablerIcons.load(FilledIcon.CIRCLE_CHECK)  # Filled icon

NOTE:
The icon names are the same as on the tabler-icons.io site, except every letter is uppercase and hyphens are replaced with underscores.
Examples: rotateROTATE, arrow-down-rightARROW_DOWN_RIGHT

Customization

Setting a custom size, color, and stroke width:

# Width and height 100px (default: 24)
icon_custom_size = TablerIcons.load(OutlineIcon.ROTATE, size=100)

# Color red (default: '#FFF')
icon_custom_color = TablerIcons.load(OutlineIcon.ROTATE,  color='#ff0000')

# Stroke width 1.5 (default: 2.0)
icon_custom_stroke_width = TablerIcons.load(OutlineIcon.ROTATE, stroke_width=1.5)

# Combining everything
icon_custom = TablerIcons.load(OutlineIcon.ROTATE, size=100, color='#ff0000', stroke_width=1.5)

NOTE:
The color can either be a hex color or one of very limited color names.
Examples: '#ec3440', '#581790', 'red', 'green', 'blue'

Examples

  • Using an icon with Pillow:
from pytablericons import TablerIcons, FilledIcon

icon = TablerIcons.load(FilledIcon.CIRCLE_CHECK)  # Load icon
icon.show()  # Show icon
print(icon.size)  # Print icon size
  • Using an icon with PyQt6:
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QMainWindow, QPushButton
from pytablericons import TablerIcons, OutlineIcon


class Window(QMainWindow):
    def __init__(self):
        super().__init__(parent=None)
        
        # Load icon
        icon_rotate = TablerIcons.load(OutlineIcon.ROTATE, color='#000')
        
        # Create button with icon
        self.button = QPushButton(self)
        self.button.setText('Rotate')
        self.button.setIcon(QIcon(icon_rotate.toqpixmap()))
  • Using an icon with Tkinter:
from PIL import ImageTk
from tkinter import Tk, Button
from tkinter.constants import *
from pytablericons import TablerIcons, OutlineIcon


# Create window
root = Tk()

# Load icon and convert to ImageTk
icon_rotate = TablerIcons.load(OutlineIcon.ROTATE, size=16, color='#000', stroke_width=3.0)
icon_rotate_tk_image = ImageTk.PhotoImage(icon_rotate)

# Create button with icon
button = Button(root, text='Rotate', image=icon_rotate_tk_image, compound=LEFT)
button.pack(padx=50, pady=25)

# Run event loop
root.mainloop()

More in-depth examples can be found in the examples folder.

Preview

Outline version (4577 icons)

Tabler Icons preview

Filled version (660 icons)

Tabler Icons preview

Tests

Installing the required test dependencies pytest and coveragepy:

pip install pytest coverage

To run the tests with coverage, clone this repository, go into the main directory and run:

coverage run -m pytest
coverage report --ignore-errors -m

License

This software is licensed under the MIT license.