如何将自定义图像放置到 QMessageBox 上

alp*_*ric 2 python qt pyqt qmessagebox

在此处输入图片说明


单击“提交”按钮会带来QMessageBox三个响应按钮。“严重”、“信息”、“问题”、“警告”框各有其图标。有没有办法自定义 QMessageBox 上的图标?

from PyQt4 import QtGui, QtCore
import sys
app = QtGui.QApplication([])

class Dialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)

        self.resize(300, 100)
        self.setLayout(QtGui.QVBoxLayout())

        button = QtGui.QPushButton('Submit')
        button.clicked.connect(self.onclick)
        self.layout().addWidget(button)

    def onclick(self):
        self.close()
        messagebox = QtGui.QMessageBox(QtGui.QMessageBox.Warning, "Title text", "body text", buttons = QtGui.QMessageBox.Discard | QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Ok, parent=self)
        messagebox.setDefaultButton(QtGui.QMessageBox.Cancel)
        exe = messagebox.exec_()
        print 'messagebox.exec_(): %s'%exe    



dialog = Dialog()
dialog.show()     
app.exec_()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Mon*_*tor 5

创建后QMessageBox,只需调用messagebox.setIconPixmap(QPixmap(":/images/image_file))whereimage_file是图像资源的路径。

  • 可能需要编辑答案以包含相对路径的结束引号,以防没有经验的人复制此尝试。应该是 `messagebox.setIconPixmap(QPixmap(":/images/image_file"))` 无法自己编辑,因为它少于 6 个字符。 (2认同)