python - 将 QgsMessageBar 与 ui 文件合并?

标签 python pyqt4 qgis

我尝试将 QgsMessageBar 与 ma ui 文件合并

from ui_file import Ui_File
class MyClass(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.bar = QgsMessageBar()
        self.ui = Ui_File()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.run)
    def run(self):
        self.bar.pushMessage("Hello", "World", level=QgsMessageBar.INFO)

当我将“bar”更改为“ui”时,出现错误: “Ui_File”对象没有属性“pushMessage”

ui 文件中缺少某些内容? 如何解决?

最佳答案

示例中的代码看起来不错,但您需要将消息栏添加到对话框的布局中。

如何执行此操作取决于对话框的布局类型以及您希望消息栏出现的位置。如果布局是 QVBoxLayout,并且您希望消息栏位于对话框底部,只需执行以下操作:

    self.layout().addWidget(self.bar)

并将其放在对话框的顶部,您可以这样做:

    self.layout().insertWidget(0, self.bar)

但是,如果布局是 QHBoxLayoutQGridLayout,您可能需要更改 Qt Designer 中的内容才能正常工作。特别是,QGridLayout 没有插入小部件的方法,因此如果您希望消息栏位于对话框顶部,则必须为消息栏留出空间。您可能还需要确保消息栏跨越对话框的整个宽度。请参阅 QGridLayout.addWidget 的文档了解更多详情。

对于 QHBoxLayout 来说要简单得多 - 只需将现有布局放入 QVBoxLayout 布局中,然后按上述方式进行即可。

关于python - 将 QgsMessageBar 与 ui 文件合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489425/

相关文章:

python - 如何使用 selenium python 在 google 上点击第一个结果

python - 在调用函数时如何防止 GUI 卡住? (PyQT4, Python3)

gis - 是否可以将形状文件中的几何数据从 QGIS 导出到 CSV?

python - 如何在 QGraphicsItem 上使用 QGraphicsRotation

python - 如何在 QGIS python 中安装 pandas 库?

python - 如何将元组列表作为 OpenAI Gym 中的操作空间传递?

python - 使用实际数据时间和生日以及数据字段在 django 模板中定义年龄

python - Matplotlib 条形图定制

python - 具有多个断点的可拖动线

python-2.7 - 如何在PyQT的字符串中插入符号 "&"