Skip to content

WhatsNewDialog#

Multi-page release notes dialogs for onboarding users to new features.

Screenshot#

screenshot

Example#

Source: examples/dialog_whats_new.py

from qtpy.QtWidgets import QApplication

from qtextra.config import THEMES
from qtextra.dialogs.qt_whats_new import QtWhatsNewDialog, WhatsNewPage

DEMO_PAGES = [
    WhatsNewPage(
        title="Welcome to version 3.0!",
        html=(
            "Applications on your computer can send whatever information they "
            "want to wherever they want. Most often they do that for good reason, "
            "at your explicit request.<br><br>"
            "<b>But sometimes they don't!</b>"
        ),
        icon_char="🔒",
        gradient_start="#C9DFF5",
        gradient_end="#F9C5A7",
    ),
    WhatsNewPage(
        title="Network Monitor",
        html=(
            "The <b>Network Monitor</b> is a powerful tool for viewing, analyzing "
            "and controlling your app's network activity on a per-process basis."
        ),
        bullets=[
            "The connection list shows successful and blocked connections for all running processes.",
            "The traffic diagram provides a detailed history of each process for in-depth traffic analysis.",
        ],
        icon_char="📡",
        gradient_start="#FFFFFF",
        gradient_end="#EAF3FB",
    ),
    WhatsNewPage(
        title="Smarter Filtering",
        html=(
            "New <b>domain-based rules</b> let you block or allow entire hostnames "
            "with a single click.  Rules sync across your devices automatically."
        ),
        bullets=[
            "One-click wildcard rules cover all subdomains instantly.",
            "Import & export your rule sets as a simple JSON file.",
        ],
        icon_char="🛡️",
        gradient_start="#E8F5E9",
        gradient_end="#FFF9C4",
    ),
    WhatsNewPage(
        title="Live Statistics",
        html=(
            "A redesigned <b>statistics panel</b> shows bandwidth, request counts, "
            "and latency broken down by process, domain, and protocol — all in "
            "real time."
        ),
        icon_char="📊",
        gradient_start="#F3E5F5",
        gradient_end="#FCE4EC",
    ),
]

app = QApplication([])
dlg = QtWhatsNewDialog(DEMO_PAGES, version="3.0")
THEMES.apply(dlg)
dlg.show()

app.exec_()

Notes#

  • Use WhatsNewPage entries to define the pages shown in the dialog.
  • This dialog is a good fit for major releases, onboarding refreshes, and feature tours.

API#

Qt Class#

QDialog

Methods#

Methods#

Data model for a single What's New carousel slide.

Parameters:

Name Type Description Default
title str

Slide heading.

required
html str

Rich body text (HTML subset).

required
bullets list[str]

Numbered callout lines displayed below the body.

required
image_path str | None

Path to an image file shown on the right side.

required
icon_char str | None

Fallback emoji/character used when no image is provided.

required
gradient_start str

CSS colour for the top-left corner of the slide background gradient.

required
gradient_end str

CSS colour for the bottom-right corner of the slide background gradient.

required