如何删除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的问答之外,我似乎找不到任何其他选项的信息。因此,如果有人也能告诉我一些合适的文档在哪里,这将防止我在这里问太多问题

与其使用PyQt文档,不如直接使用Qt文档。您只需要将您的语言心态从Python切换到C++,然后再切换。没那么难参见例如。http://doc.qt.io/qt-4.8/qmessagebox.html#addButton或http://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.pyhttps://pypi.python.org/pypi/Qt.py/0.6.9或qtpyhttps://pypi.python.org/pypi/QtPy以便能够在飞行中从CCD_ 11切换到CCD_。它还允许在Qt4Qt5绑定之间轻松切换。

最新更新