import sys
from PySide6.QtWidgets import QMainWindow
from PySide6 import QtDBus, QtCore
from PySide6.QtCore import QLibraryInfo, qVersion, Slot
from PySide6.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):

    def __init__ (self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        service = 'org.freedesktop.DBus.Properties'
        path = '/org/freedesktop/NetworkManager'
        iface = 'org.freedesktop.NetworkManager'
        bus = QtDBus.QDBusConnection.systemBus()
        bus.registerObject('/', self)
        
        #bus.connect(service, path, iface, "PropertiesChanged", self, QtCore.SLOT("dbuspropertieschanged(QString,QMap<QString,QDBusVariant>,QList<QString>)"))
        #bus.connect(service, path, iface, "PropertiesChanged", self, QtCore.SLOT("dbuspropertieschanged(QString,QMap<QString,QVariant>,QList<QString>)"))
        bus.connect(service, path, iface, "PropertiesChanged", self, QtCore.SLOT("dbuspropertieschanged(QString,QVariantMap,QVariantList)")) 
        #bus.connect(service, path, iface, "PropertiesChanged", self, QtCore.SLOT("dbuspropertieschanged(QString,QMap,QList)"))       
        pass

    @Slot(str, dict, list)
    def dbuspropertieschanged(self, arg1:str, arg2:dict, arg3:list) -> None:
        print(arg1)
        print(arg2)
        print(arg3)
        pass

if __name__ == '__main__':
    print('Python {}.{}.{} {}'.format(sys.version_info[0], sys.version_info[1],
                                       sys.version_info[2], sys.platform))
    print(QLibraryInfo.build())
    app = QApplication(sys.argv)
    window = MainWindow()
    window.setWindowTitle(qVersion())
    window.resize(800, 480)
    window.show()
    sys.exit(app.exec())
