【问题标题】:How to remove icon from QMessageBox in PyQt5?如何从 PyQt5 中的 QMessageBox 中删除图标?
【发布时间】:2017-01-04 15:02:59
【问题描述】:

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

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 的问题和关于之外,我似乎找不到任何选项信息。因此,如果有人也可以向我展示一些适当的文档在哪里,那将阻止我在这里问太多问题

【问题讨论】:

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


    【解决方案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 通常只是默默地崩溃,让你一无所知。大多数时候,我使用 shims Qt.py https://pypi.python.org/pypi/Qt.py/0.6.9qtpy https://pypi.python.org/pypi/QtPy 以便能够即时从 PyQt 切换到 PySide。它还允许在Qt4Qt5 绑定之间轻松切换。

    【讨论】:

    • 问题在于我对 C++ 知之甚少。我很久以前就尝试过学习它,但从未走远。我也担心它们之间可能存在的差异 对,因此它确实适用于一个很棒的角色,但是我的文本和按钮现在似乎与框中的右侧对齐。改变位置的方法是什么?不能从内置的类似问题或关于的问题中删除图标吗?
    • 但是您不需要 C++ 来理解该文档。只需将:: 替换为. 即可。 :) 根据文档,除非您更改应用程序图标或父窗口图标,否则似乎无法在“关于”消息框中更改图标。如果您创建了自己的应用程序图标,那么您可能只需要使用它的较小版本(例如 128x128 像素或类似的东西)。我个人认为在 about 框中有应用程序徽标很好。
    • 您可以通过设置 sys.excepthook 在 PyQt 中轻松捕获异常。但我同意 VK 的观点,即您无需了解 C++ 即可找出文档,所有类、函数和 arg 名称都是相同的,您需要做的就是忽略类型。这些示例往往更难翻译,但 Pyqt 附带了许多从 C++ 翻译成 Python 的示例。
    • 好吧,那对我有用。经过一些研究,我想我会改用 pyside。 pyside中的一切都基本相同吗?我还可以使用这些文档吗?因为这对我有用吗?我主要担心它们的工作方式存在差异
    • PySide 的最大缺点是目前它只允许Qt4,如果您希望您的程序能够面向未来,那就太糟糕了。目前PySide2 项目正在进行中,但您必须自己编译(我听说预编译的二进制文件在 Ubuntu 15.xx 或 16.xx 上可用,但我无法验证)。最好的解决方案是使用我在上面的答案中提到的垫片。它们允许您像使用 Qt5 一样进行开发(实际上在后台使用 Qt4),并在稍后可用时轻松切换到 PySide2
    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多