#!/usr/bin/env python

import sys

try:
    from PySide6.QtCore import QLibraryInfo, qVersion, Qt, Slot
    from PySide6.QtGui import QShortcut
    from PySide6.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout
except ImportError:
    from PySide2.QtCore import QLibraryInfo, qVersion, Qt, Slot
    from PySide2.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout, QShortcut


class Window(QWidget):
    def __init__(self):
        super().__init__()
        lt = QVBoxLayout(self)
        self._checkBox = QCheckBox("test")
        lt.addWidget(self._checkBox)
        lt.addStretch()
        self._checkBox.stateChanged.connect(self.checkBox_state_changed)

    @Slot(int)
    def checkBox_state_changed(self, state):
        print('checkBox_state_changed', state, type(state))
        if state == Qt.CheckState.Checked:
            print("Checked")
        elif state == Qt.CheckState.Unchecked:
            print("Unchecked")
        elif state == Qt.CheckState.PartiallyChecked:
            print("Partially checked")
        else:
            print("Unrecognized value")


if __name__ == '__main__':
    print('Python {}.{}'.format(sys.version_info[0], sys.version_info[1]))
    print(QLibraryInfo.build())
    app = QApplication(sys.argv)
    window = Window()
    sc = QShortcut(Qt.CTRL | Qt.Key_Q, window)
    sc.activated.connect(window.close)
    window.setWindowTitle(qVersion())
    window.show()
    sys.exit(app.exec_())
