[Python] ctrl-C to terminate a pyqt application with a QOpenGLWidget

Discussão em 'Python' iniciado por Stack, Julho 4, 2025.

  1. Stack

    Stack Membro Participativo

    My main file for a pyqt application looks like this:

    #!/usr/bin/env python3
    from PyQt5.QtWidgets import QApplication

    import signal
    import sys

    from main_window import MainWindow

    if __name__ == "__main__":

    signal.signal(signal.SIGINT, signal.SIG_DFL)

    app = QApplication([])

    window = MainWindow()
    window.show()

    app.exec()


    It works, and when I ctrl-c in the terminal (on Ubuntu) the application will terminate...

    ...unless it creates a QOpenGLWidget, in which case ctrl-C does nothing.

    I tried this

    def signal_handler(signum, frame):
    """Handle SIGINT signal"""
    print("\nReceived SIGINT, closing application...")
    QApplication.instance().quit()

    if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal_handler)
    ...


    but signal_handler is never called.

    How can I terminate a pyqt application using QOpenGLWidget using ctrl-C from the terminal?

    Continue reading...

Compartilhe esta Página