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

问题描述:

我想编码一个消息框,只是弹出并说了一些东西,并有一个单一的按钮来关闭它,但因为我只有少量的文本在框左边的图标/图像是巨大的和看起来不好。我想知道如何删除它。我也无法制作自定义消息框。教程说,这是你如何做一个自定义的消息框:如何在PyQt5中从QMessageBox中删除图标?

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

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

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

然而,这有文字窗口中的大图标,我似乎无法做任何其他的框,因为它只是停止程序,并再次返回1

我急需一些体面的PyQt文档。我似乎无法找到很多文档,除非它在C++中。例如,我似乎无法找到任何关于QmessageBox的问题以外的选项信息。所以,如果有人也可以告诉我哪里有一些正确的文档存在,它会阻止我在这里问太多问题。

而不是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)

而且多了一个提示你:我也觉得它更容易调试我的程序与PySidePyQt,因为不像PyQtPySide捕获该异常,版画,为了安慰和保持运行。虽然PyQt通常只是默默地崩溃,让你无能为力。大多数时候,我正在使用垫片Qt.pyhttps://pypi.python.org/pypi/Qt.py/0.6.9qtpyhttps://pypi.python.org/pypi/QtPy能够在运行中从PyQt切换到PySide。它还允许轻松地在Qt4Qt5之间进行切换。

+0

问题是我知道很少的C++。我尝试了很久以前的学习,但从未走得太远。我也担心它们之间可能存在差异 正确,所以它可以与一个非常棒的角色一起工作,但是我的文本和按钮似乎与框中的右侧对齐。改变立场的方法是什么? 图标不能从内置的类似问题中删除吗? –

+0

但是你不需要C++来理解文档。只需用'.'替换'::'即可。 :)根据文档,除非您更改应用程序图标或父窗口图标,否则该图标似乎无法在“约”消息框中更改。如果你已经创建了自己的应用程序图标,那么你可能只需要使用它的较小版本(比如128x128像素或类似的东西)。我个人认为在应用程序标识框中添加应用程序徽标是非常好的。 –

+3

您可以通过设置sys.excepthook轻松捕获PyQt中的异常。但我同意VK,你不需要知道C++来找出文档,所有的类,函数和参数名都是相同的,所有你需要做的就是忽略类型。这些示例往往难以翻译,但Pyqt带有大量从C++转换为Python的示例。 – Schollii