import sys
from PySide6.QtCore import QTimer, QLibraryInfo, qVersion
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget


def fail():
    raise Exception("FAIL!")


if __name__ == '__main__':
    print('Python {}.{}.{}'.format(sys.version_info[0], sys.version_info[1],
                                   sys.version_info[2]))
    print(QLibraryInfo.build(), "\n")
    app = QApplication(sys.argv)
    b1 = QPushButton("FAIL direct")
    b1.clicked.connect(fail)
    b2 = QPushButton("FAIL timer(0)")
    b2.clicked.connect(lambda: QTimer.singleShot(0, fail))
    b3 = QPushButton("FAIL timer(1)")
    b3.clicked.connect(lambda: QTimer.singleShot(1, fail))

    widget = QWidget()
    widget.setWindowTitle(qVersion())
    layout = QVBoxLayout(widget)
    layout.addWidget(b1)
    layout.addWidget(b2)
    layout.addWidget(b3)
    widget.setMinimumWidth(300)

    widget.show()
    app.exec()
