GUI 圖形介面

概觀

LoadDensity 內含選用的 PySide6 圖形前端。提供啟動快速 HTTP 測試的表單控制元件、鏡像框架日誌的 log panel,以及每秒輪詢 test_record_instance 的即時統計面板。

安裝

pip install "je_load_density[gui]"

引入:

  • PySide6 — Qt for Python bindings。

  • qt-material — Material design 主題。

啟動

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())

版面

  • 測試參數表單 — URL、測試時間、user 數、spawn rate、HTTP method。

  • 開始按鈕 — 在背景 QThread 啟動壓測。

  • 即時統計面板 — 總請求、目前速率、平均與 p95 延遲、失敗數。每 1 秒重新整理。

  • Log panel — 即時框架日誌。

  • Material Design 主題qt-materialdark_amber.xml

語言

GUI 內含英文、繁體中文、日文、韓文翻譯。透過 LanguageWrapper.reset_language 切換:

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

架構

元件

說明

LoadDensityUI

QMainWindow 主機。套用主題並嵌入中央 widget。

LoadDensityWidget

表單 + 開始按鈕 + 統計面板 + log panel。

StatsPanel

由 QTimer 驅動、讀取 test_record_instance 的面板。

LoadDensityGUIThread

在背景跑測試的 QThread,避免阻擋 UI。

InterceptAllFilter

將 log records 攔截至 thread-safe queue。

log_message_queue

連接 logger 與 GUI log panel 的橋接 queue。

Note

在 Windows 上,主視窗會以 ctypes 設定 AppUserModelID,工作列才會顯示正確的應用名稱。