如何从PyQt5中的QMessageBox中删除图标?

时间:2017-01-04 15:03:00

标签: python python-3.x pyqt pyqt5 qmessagebox

我正在尝试编写一个消息框,它只是弹出并说出一些内容并且只有一个按钮来关闭它,但是因为我在框中只有少量文本,所以它左边的图标/图像是巨大的看起来很糟糕我想知道如何删除它。我也无法制作自定义消息框。教程说这就是你制作自定义消息框的方式:

box = QMessageBox()
box.setText('text')
box.addButton(QPushButton('Close', self))
box.exec_()

然而,这只是关闭我的程序并返回1.我当前的代码使用QMessageBox()的about方法:

box = QMessageBox().about(self, 'About', 'This is a test Program')

然而,在文本窗口中有一个大图标,我似乎无法对框进行任何其他操作,因为它只是停止程序并再次返回1

我迫切需要一些不错的PyQt文档。除非是在C ++中,否则我似乎无法找到很多文档。例如,我似乎无法找到除问题和QmessageBox之外的任何选项信息。因此,如果有人也可以告诉我某些正确的文档存在哪里,这将阻止我在这里提出太多问题

1 个答案:

答案 0 :(得分:1)

而不是PyQt文档,最好直接使用Qt文档。您只需将语言思维从Python切换到C ++,然后再返回。这并不困难。 :)见例如http://doc.qt.io/qt-4.8/qmessagebox.html#addButtonhttp://doc.qt.io/qt-4.8/qmessagebox.html#about我认为这是非常详细的文档,大多数其他框架都无法比拟。

请注意addButton()有三个覆盖。从文档中看来,您需要将两个参数传递给box.addButton(QPushButton('Close', self), QMessageBox.RejectRole)(您忘记了角色!)或更好,您使用使用标准按钮的覆盖,然后您只传递一个参数:box.addButton(QMessageBox.Close)

还有一个提示:我发现使用PySide调试程序比PyQt更容易,因为与PyQt不同,PySide捕获异常,打印出来控制台并继续运行。虽然PyQt通常只是默默地崩溃,让你无能为力。大多数情况下,我使用垫片Qt.py https://pypi.python.org/pypi/Qt.py/0.6.9qtpy https://pypi.python.org/pypi/QtPy即可快速从PyQt切换到PySide 。它还允许轻松切换Qt4Qt5绑定。