import inspect
from PySide6 import QtWidgets, QtMultimediaWidgets, QtWebEngineWidgets, QtSvgWidgets


def print_properties(cls):
    try:
        w = cls()
    except TypeError as e:
        # print(e)
        pass
    except NotImplementedError as e:
        # print(e)
        pass
    else:
        mo = w.metaObject()
        for i in range(mo.propertyOffset(), mo.propertyCount()):
            name = mo.property(i).name()
            try:
                w.property(name)
            except RuntimeError as e:
                print(f"property: {name}, error: {e}, classname: {cls.__name__}")


def main():
    qtmodules = (QtWidgets, QtMultimediaWidgets, QtWebEngineWidgets, QtSvgWidgets)

    app = QtWidgets.QApplication([])

    for qtmodule in qtmodules:
        for name, obj in inspect.getmembers(qtmodule):
            if inspect.isclass(obj) and issubclass(obj, QtWidgets.QWidget):
                print_properties(obj)


main()
