Python PyQt5: How to show an error message with PyQt5

前端 未结 6 1285
别那么骄傲
别那么骄傲 2020-12-15 13:00

In normal Python (3.x) we always use showerror() from the tkinter module to display an error message but what should I do in PyQt5 to display exactly the same message type a

相关标签:
6条回答
  • 2020-12-15 13:50

    Qt includes an error-message specific dialog class QErrorMessage which you should use to ensure your dialog matches system standards. To show the dialog just create a dialog object, then call .showMessage(). For example:

    error_dialog = QtWidgets.QErrorMessage()
    error_dialog.showMessage('Oh no!')
    

    Here is a minimal working example script:

    import PyQt5
    from PyQt5 import QtWidgets
    
    app = QtWidgets.QApplication([])
    
    error_dialog = QtWidgets.QErrorMessage()
    error_dialog.showMessage('Oh no!')
    
    app.exec_()
    
    0 讨论(0)
  • 2020-12-15 13:51

    Assuming you are in a QWidget from which you want to display an error message, you can simply use QMessageBox.critical(self, "Title", "Message"), replace self by another (main widget for example) if you are not is a QWidget class.

    0 讨论(0)
  • 2020-12-15 13:59

    All above options didn't work for me using Komodo Edit 11.0. Just had returned "1" or if not implemented "-1073741819".

    Usefull for me was: Vanloc's solution.

    def my_exception_hook(exctype, value, traceback):
        # Print the error and traceback
        print(exctype, value, traceback)
        # Call the normal Exception hook after
        sys._excepthook(exctype, value, traceback)
        sys.exit(1)
    
    # Back up the reference to the exceptionhook
    sys._excepthook = sys.excepthook
    
    # Set the exception hook to our wrapping function
    sys.excepthook = my_exception_hook
    
    0 讨论(0)
  • 2020-12-15 13:59

    To show a message box, you can call this def:

    from PyQt5.QtWidgets import QMessageBox, QWidget
    
    MainClass(QWidget):
        def __init__(self):
            super().__init__()
    
        def clickMethod(self):
            QMessageBox.about(self, "Title", "Message")
    
    0 讨论(0)
  • 2020-12-15 14:02

    Don't forget to call .exec_() to display the error:

    from PyQt5.QtWidgets import QMessageBox
    
    msg = QMessageBox()
    msg.setIcon(QMessageBox.Critical)
    msg.setText("Error")
    msg.setInformativeText('More information')
    msg.setWindowTitle("Error")
    msg.exec_()
    
    0 讨论(0)
  • 2020-12-15 14:03

    The following should work:

    msg = QMessageBox()
    msg.setIcon(QMessageBox.Critical)
    msg.setText("Error")
    msg.setInformativeText(e)
    msg.setWindowTitle("Error")
    

    It is not the exact same message type (different GUI's) but fairly close. e is the expression for an Error in python3

    Hope that helped, Narusan

    0 讨论(0)
提交回复
热议问题