如何从 PyQt5 中的 QMessageBox 中删除图标?
How to remove icon from QMessageBox in PyQt5?
我正在尝试编写一个消息框,它会弹出并显示一些内容,并且只有一个按钮可以关闭它,但是因为我在 icon/image 左侧的框中只有少量文本它很大,看起来很糟糕。我想知道如何删除它。我在制作自定义消息框时也遇到了问题。教程说这是制作自定义消息框的方法:
box = QMessageBox()
box.setText('text')
box.addButton(QPushButton('Close', self))
box.exec_()
然而,这只是关闭了我的程序,returns 1。我当前的代码使用 QMessageBox() 的 about 方法:
box = QMessageBox().about(self, 'About', 'This is a test Program')
但是文本中有那个大图标 window 我似乎无法对该框做任何其他操作,因为它只是停止程序并再次 returns 1
我迫切需要一些像样的 PyQt 文档。除非是在 C++ 中,否则我似乎根本找不到很多文档。例如,除了 QmessageBox 的问题和关于之外,我似乎找不到任何选项信息。因此,如果有人也可以告诉我一些适当的文档存放在哪里,这将阻止我在这里问太多问题
与其使用PyQt文档,不如直接使用Qt文档。您只需要将您的语言思维方式从 Python 切换到 C++,来回切换。这并不难。 :) 参见例如http://doc.qt.io/qt-4.8/qmessagebox.html#addButton or http://doc.qt.io/qt-4.8/qmessagebox.html#about 我认为这是非常详细的文档,是大多数其他框架无法比拟的。
请注意 addButton()
有 3 个覆盖。从文档看来,您要么需要将两个参数传递给 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.9 or qtpy
https://pypi.python.org/pypi/QtPy 来动态地从 PyQt
切换到 PySide
。它还允许在 Qt4
和 Qt5
绑定之间轻松切换。
我正在尝试编写一个消息框,它会弹出并显示一些内容,并且只有一个按钮可以关闭它,但是因为我在 icon/image 左侧的框中只有少量文本它很大,看起来很糟糕。我想知道如何删除它。我在制作自定义消息框时也遇到了问题。教程说这是制作自定义消息框的方法:
box = QMessageBox()
box.setText('text')
box.addButton(QPushButton('Close', self))
box.exec_()
然而,这只是关闭了我的程序,returns 1。我当前的代码使用 QMessageBox() 的 about 方法:
box = QMessageBox().about(self, 'About', 'This is a test Program')
但是文本中有那个大图标 window 我似乎无法对该框做任何其他操作,因为它只是停止程序并再次 returns 1
我迫切需要一些像样的 PyQt 文档。除非是在 C++ 中,否则我似乎根本找不到很多文档。例如,除了 QmessageBox 的问题和关于之外,我似乎找不到任何选项信息。因此,如果有人也可以告诉我一些适当的文档存放在哪里,这将阻止我在这里问太多问题
与其使用PyQt文档,不如直接使用Qt文档。您只需要将您的语言思维方式从 Python 切换到 C++,来回切换。这并不难。 :) 参见例如http://doc.qt.io/qt-4.8/qmessagebox.html#addButton or http://doc.qt.io/qt-4.8/qmessagebox.html#about 我认为这是非常详细的文档,是大多数其他框架无法比拟的。
请注意 addButton()
有 3 个覆盖。从文档看来,您要么需要将两个参数传递给 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.9 or qtpy
https://pypi.python.org/pypi/QtPy 来动态地从 PyQt
切换到 PySide
。它还允许在 Qt4
和 Qt5
绑定之间轻松切换。