Skip to main content

IFAZ Widget Toolkit — widgets Python con temática táctico-militar sobre pywebview

Project description

ISKG logo

ISKG

IFAZ Widget Toolkit — Python GUI framework with IFAZ theme

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

  • 30+ widgets: Button, Entry, ComboBox, Slider, ProgressBar, Canvas, TreeView, DataGrid, Knob, Gauge, Notebook, MenuBar, and more.
  • Layout engines: pack, grid (with sticky + weights), place.
  • Theming: 5 built-in themes (ifaz, amber, green, blue, light), 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.

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

# desde GitHub Releases
pip install https://github.com/Iskander-mlander/ISKG/releases/download/v0.3.8/iskg-0.3.8-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", "cold", "warm", "night"],
    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.8.tar.gz (63.9 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.8-py3-none-any.whl (64.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: iskg-0.3.8.tar.gz
  • Upload date:
  • Size: 63.9 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.8.tar.gz
Algorithm Hash digest
SHA256 efd8b23db22fba5458455100df2a34a73963092ad41966f6cf4e62b234209a2f
MD5 4efa90b5feda66dce57cc66899c0fcc2
BLAKE2b-256 3f0dc1dc58b83cca05ed8a46f898fa328666d0c63c03d15bb98df100a1998daa

See more details on using hashes here.

Provenance

The following attestation bundles were made for iskg-0.3.8.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.8-py3-none-any.whl.

File metadata

  • Download URL: iskg-0.3.8-py3-none-any.whl
  • Upload date:
  • Size: 64.6 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 c21a534717ba877c44b67b5d6a9988533912e303db818f100dbdc463f0b0b92b
MD5 b4179436c20b808b778515fd5b0f2634
BLAKE2b-256 58615430196fb0d7f1dd66f6a8bac85e0d51f0565694de6dc23f866b352014fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for iskg-0.3.8-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