Skip to main content

IFAZ Widget Toolkit — widgets Python livianos sobre pywebview

Project description

ISKG logo

ISKG

IFAZ Widget Toolkit — Python GUI framework ligero

CI Python License Release Platform


ISKG renders native-looking widgets as HTML/CSS/JS inside a native window via pywebview.

No browser, no HTTP server — just a Python process and a lightweight WebView.

Features

  • 38 widgets: Button, Entry, ComboBox, Slider, ProgressBar, Canvas, TreeView, DataGrid, Knob, Gauge, Notebook, MenuBar, and more.
  • Layout engines: pack, grid (with sticky + weights), place.
  • Theming: 10 built-in themes (ifaz, desert, infinity, cyberdusk, light, dracula, nord, gruvbox, monokai, catppuccin), CSS variable system.
  • Cross-platform: Linux, Windows, macOS (same codebase).
  • Zero HTTP: No server, no ports, no browser tabs — just a window.
  • JS bridge: Bidirectional Python ↔ JavaScript calls for real-time UI updates.
  • .tooltip on every widget: Set a tooltip via property or config().
  • after() timers: Cancelable timer objects with .cancel() and .running.
  • Debug mode: Pass debug=True to Application() to log JS errors to stderr.
  • 7 embedded fonts (SIL OFL): Inter, JetBrains Mono, Nunito, Manrope, Space Grotesk, Fira Sans, Playfair Display — no CDN, todo embebido.

Comparison — lightness & footprint

Framework Dependencies Installed size Own code Notes
Tkinter 0 (stdlib) ~1 MB No modern widgets, dated look
Remi 1 (bottle/werkzeug) ~2 MB ~15 KLoC Browser-based, needs a tab
ISKG 1 (pywebview) ~2 MB ~6 KLoC Native window, modern widgets
PySimpleGUI 1 (tkinter/Qt) ~5 MB ~100 KLoC Wrapper, not a framework
Dear PyGui 0 (bundled) ~10 MB ~80 KLoC GPU-accelerated, no native look
Kivy SDL2, GLEW, etc ~15 MB ~200 KLoC Own UI language, heavy
wxPython wxWidgets ~20 MB ~150 KLoC Native look, complex build
PyQt/PySide Qt (~100 MB) ~50 MB ~500 KLoC Full-featured, huge size
NiceGUI FastAPI + uvicorn + Vue ~30 MB ~50 KLoC Browser-based, async
Flet Flutter SDK ~200 MB Requires Flutter toolchain

ISKG ranks 3rd in lightness — only Tkinter and Remi are smaller. Among frameworks that render in a native window (not a browser tab), ISKG is the lightest after Tkinter.

Quick start

# desde PyPI
pip install iskg

# from GitHub Releases
pip install https://github.com/Iskander-mlander/ISKG/releases/download/v0.3.9/iskg-0.3.9-py3-none-any.whl
from iskg import (
    Application, Button, Label, Frame, Knob, LEDDisplay,
    Slider, ComboBox, ToggleSwitch, Separator, IndicatorLED,
)

app = Application(title="ISKG Dashboard", width=680, height=480)

counter = 0

def on_knob(data):
    led.value = int(float(data))

def on_slider():
    throttle_led.value = int(slider.value)
    ind_led.active = slider.value > 50

def on_arm():
    global counter; counter += 1
    status.config(text=f"Armed x{counter}")

def on_disarm():
    status.config(text="Standing By")

def on_theme(data=None):
    app.set_theme(combo.value)

root = Frame()
root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)

Label(parent=root, text="ISKG DASHBOARD", anchor="center",
      font="bold 16px").grid(row=0, column=0, columnspan=2, pady=8)

# left — Knob + LED
left = Frame(parent=root)
left.grid(row=1, column=0, sticky="nsew", padx=10, pady=6)
Label(parent=left, text="RPM CONTROL", anchor="center",
      font="bold 12px").grid(pady=6)
knob = Knob(parent=left, from_=0, to=3000, value=0,
            size=90, color="cyan")
knob.bind("change", on_knob)
knob.grid(sticky="c", pady=4)
led = LEDDisplay(parent=left, value=0, digits=4,
                 color="cyan", height=36)
led.grid(sticky="c", pady=6)

# right — Slider + LED display
right = Frame(parent=root)
right.grid(row=1, column=1, sticky="nsew", padx=10, pady=6)
Label(parent=right, text="THROTTLE", anchor="center",
      font="bold 12px").grid(pady=6)
slider = Slider(parent=right, from_=0, to=100,
                value=0, command=on_slider)
slider.grid(sticky="we", pady=8)
throttle_led = LEDDisplay(parent=right, value=0, digits=3,
                          color="amber", height=36)
throttle_led.grid(sticky="c", pady=4)
ind_led = IndicatorLED(parent=right, color="red")
ind_led.grid(sticky="c", pady=2)

# bottom bar
bottom = Frame(parent=root)
bottom.grid(row=2, column=0, columnspan=2, sticky="we", padx=10, pady=6)
Button(parent=bottom, text="ARM", command=on_arm).grid(padx=4)
Button(parent=bottom, text="DISARM", command=on_disarm).grid(padx=4)
Label(parent=bottom, text="Theme:").grid(padx=(12, 2))
combo = ComboBox(parent=bottom,
    values=["ifaz", "desert", "infinity", "cyberdusk", "light", "dracula", "nord", "gruvbox", "monokai", "catppuccin"],
    command=on_theme).grid(padx=4)
ToggleSwitch(parent=bottom).grid(padx=4)
status = Label(parent=bottom, text="Standing By")
status.grid(padx=8)

app.add(root)
app.run()

ISKG Dashboard screenshot

Documentation

Full API reference: github-pages

License

GPLv3 — see LICENSE.

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

iskg-0.3.10.tar.gz (205.8 kB view details)

Uploaded Source

Built Distribution

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

iskg-0.3.10-py3-none-any.whl (205.1 kB view details)

Uploaded Python 3

File details

Details for the file iskg-0.3.10.tar.gz.

File metadata

  • Download URL: iskg-0.3.10.tar.gz
  • Upload date:
  • Size: 205.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for iskg-0.3.10.tar.gz
Algorithm Hash digest
SHA256 c9927ad3bdfcc45aff21c28cbc7431074f192247128d41ce689953a248f64aac
MD5 71cd0adb907a1710675c5b6dcfd76d71
BLAKE2b-256 11bb074e993d3956a0a895238bb347628245be17eb890af93aa713590747fb94

See more details on using hashes here.

Provenance

The following attestation bundles were made for iskg-0.3.10.tar.gz:

Publisher: release.yml on Iskander-mlander/ISKG

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

File details

Details for the file iskg-0.3.10-py3-none-any.whl.

File metadata

  • Download URL: iskg-0.3.10-py3-none-any.whl
  • Upload date:
  • Size: 205.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for iskg-0.3.10-py3-none-any.whl
Algorithm Hash digest
SHA256 954182bda0c4e2a5e30fcef895868b3d814bc59a0d53b6698da87ebe5468cf82
MD5 e530d5c9156a6161a5039dff0cd6b3b4
BLAKE2b-256 7a7def3e81e3de66ac80f02a60ad2aef3f4bac3f0dcb2bb0415c5b8911cd2d44

See more details on using hashes here.

Provenance

The following attestation bundles were made for iskg-0.3.10-py3-none-any.whl:

Publisher: release.yml on Iskander-mlander/ISKG

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