Metadata-Version: 2.1
Name: tk-html-widgets
Version: 0.2.0
Summary: HTML widgets for tkinter
Home-page: https://github.com/paolo-gurisatti/tk_html_widgets
Author: Paolo Gurisatti
Author-email: paolo@fastmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.4.*
Description-Content-Type: text/markdown
Requires-Dist: Pillow (>=5.3.0)

# tk_html_widgets
HTML widgets for tkinter

## Overview
This module is a collection of tkinter widgets whose text can be set in HTML format.
A HTML widget isn't a web browser frame, it's only a simple and lightweight HTML parser that formats the tags used by the tkinter Text base class.
The widgets behaviour is similar to the PyQt5 text widgets (see the [PyQt5 HTML markup subset](http://doc.qt.io/qt-5/richtext-html-subset.html)).

## Installation
``pip install tk_html_widgets``

## Requirements
 - [Python 3.4 or later](https://www.python.org/downloads/) with tcl/tk support
 - [Pillow 5.3.0](https://github.com/python-pillow/Pillow)

## Example
```python
import tkinter as tk
from tk_html_widgets import HTMLLabel

root = tk.Tk()
text = HTMLLabel(root)
text.pack(fill="both", expand=True)
text.set_html('<h1 style="color: red; text-align: center"> Hello World </H1>')
text.fit_height()
root.mainloop()
```

## Documentation

### Classes:
All widget classes inherits from the tkinter.Text() base class.

#### class HTMLScrolledText(tkinter.Text)
> Text-box widget with vertical scrollbar
#### class HTMLText(tkinter.Text)
> Text-box widget without vertical scrollbar
#### class HTMLLabel(tkinter.Text)
> Text-box widget with label appereance

### Methods:
#### def set_html(self, html, strip=True):
> **Description:** Sets the text in html text. <br>
> **Args:**
>  - *html*: input HTML string
>  - *strip*: if True (default) handles spaces in HTML-like style 

#### def fit_height(self):
> **Description:** Fit widget height in order to display all wrapped lines

### HTML support:
Only a subset of the whole HTML tags and attributes are supported (see table below).
Where is possibile, I hope to add more HTML support in the next releases.

 **Tags** | **Attributes**  | **Notes** 
--- | --- | ---
a| style, href | 
b| style | 
br|| 
code | style | 
div | style | 
em| style | 
h1 | style | 
h2 | style | 
h3 | style | 
h4 | style | 
h5 | style | 
h6 | style | 
i| style | 
img| src, width, height | local images only 
li| style | 
mark| style | 
ol| style, type | 1, a, A list types only
p | style | 
pre | style | 
span| style | 
strong| style | 
u| style | 
ul| style | bullet glyphs only

## Comparison chart
In order to check the appearance of the HTML text displayed by the tk_html_widgets, I made some HTML templates and I compared the text displayed by the HTMLText widget with the text displayed by Firefox and the PyQt5 QTextBrowser widget.
See details and templates HTML code in the [examples folder](https://github.com/paolo-gurisatti/tk_html_widgets/tree/master/examples).

### Tags template comparison:
**Firefox** | **tk_html_widgets.HTMLText** | **PyQt5.QtWidgets.QTextBrowser** 
--- | --- | ---
![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/tags_firefox.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/tags_tk.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/tags_pyqt5.png)

### Styles template comparison:
**Firefox** | **tk_html_widgets.HTMLText** | **PyQt5.QtWidgets.QTextBrowser** 
--- | --- | ---
![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/styles_firefox.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/styles_tk.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/styles_pyqt5.png)

### Images template comparison:
**Firefox** | **tk_html_widgets.HTMLText** | **PyQt5.QtWidgets.QTextBrowser** 
--- | --- | ---
![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/images_firefox.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/images_tk.png)|![](https://github.com/paolo-gurisatti/tk_html_widgets/blob/master/examples/img/images_pyqt5.png)


## Acknowledgements
Thanks to my mentor and valued collegue Gianluca: *``a light in the darkness of code``*.


