GUI (Graphical User Interface)

Overview

LoadDensity ships an optional PySide6 graphical front-end. It carries the form controls for kicking off a quick HTTP test, a log panel that mirrors the framework log, and a live stats panel that polls test_record_instance once a second.

Install

pip install "je_load_density[gui]"

Pulls in:

  • PySide6 — Qt for Python bindings.

  • qt-material — Material design theme.

Launch

import sys
from PySide6.QtWidgets import QApplication
from je_load_density.gui.main_window import LoadDensityUI

app = QApplication(sys.argv)
window = LoadDensityUI()
window.show()
sys.exit(app.exec())

Layout

  • Test parameter form — URL, test duration, user count, spawn rate, HTTP method.

  • Start button — Launches the load test in a background QThread.

  • Live stats panel — Total requests, current rate, average and p95 latency, failure count. Refreshes every 1 s.

  • Log panel — Real-time framework log feed.

  • Material Design themedark_amber.xml from qt-material.

Languages

The GUI ships with English, Traditional Chinese, Japanese, and Korean translations. Switch via the LanguageWrapper.reset_language helper:

from je_load_density.gui.language_wrapper.multi_language_wrapper import (
    language_wrapper,
)
language_wrapper.reset_language("Japanese")     # or Korean / Traditional_Chinese / English

Architecture

Component

Description

LoadDensityUI

QMainWindow host. Applies theme and wires the central widget.

LoadDensityWidget

Form + start button + stats panel + log panel.

StatsPanel

QTimer-driven panel reading test_record_instance.

LoadDensityGUIThread

Background QThread that runs the test without blocking the UI.

InterceptAllFilter

Captures log records into a thread-safe queue.

log_message_queue

Bridges the logger and the GUI log panel.

Note

On Windows the main window sets AppUserModelID via ctypes so the taskbar correctly identifies the application.