Python 是否将QgsMessageBar与ui文件合并?

Python 是否将QgsMessageBar与ui文件合并?,python,pyqt4,qgis,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.pushBu

我尝试将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_文件”对象没有属性“pushMessage”

ui文件中缺少某些内容?
如何修复它?

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

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

    self.layout().addWidget(self.bar)
要将其置于对话框顶部,您可以执行以下操作:

    self.layout().insertWidget(0, self.bar)
但是,如果布局是
QHBoxLayout
QGridLayout
,则您可能必须在Qt设计器中进行更改,以使其正常工作。特别是,
QGridLayout
没有插入小部件的方法,因此如果您希望消息栏位于对话框顶部,则必须为其留出空间。您可能还需要确保消息栏跨越对话框的整个宽度。有关更多详细信息,请参阅文档

对于
QHBoxLayout
来说,这要简单得多-只需将现有布局放在
QVBoxLayout
布局中,并按上述步骤进行操作即可