如何自定义pyqt消息框?

时间:2018-03-07 15:44:16

标签: python pyqt pyqt4

PyQt4的

perl

这会显示一个消息框,但是当单击某个选项时,没有任何反应,并且该框关闭。如何运行下一个函数?

1 个答案:

答案 0 :(得分:0)

如果审核了docs

  

int QMessageBox :: exec()

     

将消息框显示为模式对话框,直到用户关闭它为止。

     

当使用带有标准按钮的QMessageBox时,此函数返回   一个StandardButton值,表示标准按钮   点击。 当使用带有自定义按钮的QMessageBox时,此功能   返回一个不透明的值;使用clickedButton()来确定哪个按钮   点击了。

     

注意:result()函数也返回StandardButton值   QDialog :: DialogCode

     

用户无法与同一应用程序中的任何其他窗口进行交互   直到他们关闭对话框,通过单击按钮或使用   窗口系统提供的机制。

     

另见show()和result()。

正如您所建议的那样,您必须使用clickedButton(),如下所示:

from PyQt4 import QtGui
import sys


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    msgBox = QtGui.QMessageBox()
    msgBox.setText('Which type of answers would you like to view?')
    correctBtn = msgBox.addButton('Correct', QtGui.QMessageBox.YesRole)
    incorrectBtn = msgBox.addButton('Incorrect', QtGui.QMessageBox.NoRole)
    cancelBtn = msgBox.addButton('Cancel', QtGui.QMessageBox.RejectRole)

    msgBox.exec_()

    if msgBox.clickedButton() == correctBtn:
        print("Correct")
    elif msgBox.clickedButton() == incorrectBtn:
        print("Incorrect")
    elif msgBox.clickedButton() == cancelBtn:
        print("Cancel")