"""Headless check for the About button and dialog: saves header and dialog PNGs.""" import sys from pathlib import Path from PySide6.QtCore import QTimer from PySide6.QtGui import QFont from PySide6.QtWidgets import QApplication, QMessageBox sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src")) import main as m OUT = Path(__file__).resolve().parent def snap_dialog(): boxes = [w for w in QApplication.topLevelWidgets() if isinstance(w, QMessageBox)] if not boxes: QTimer.singleShot(200, snap_dialog) return boxes[0].grab().save(str(OUT / "about-dialog.png")) boxes[0].close() def open_about(window): QTimer.singleShot(600, lambda: snap_dialog()) window.show_about() def main(): app = QApplication(sys.argv) app.setApplicationName(m.APP_NAME) app.setFont(QFont("Microsoft YaHei UI", 10)) theme_manager = m.ThemeManager(app) window = m.Window(theme_manager) window.show() def grab_header(): window.grab().save(str(OUT / "about-header.png")) open_about(window) QTimer.singleShot(1500, grab_header) QTimer.singleShot(6000, app.quit) sys.exit(app.exec()) if __name__ == "__main__": main()