我尝试将 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)
但是,如果布局是 QHBoxLayout
或 QGridLayout
,您可能需要更改 Qt Designer 中的内容才能正常工作。特别是,QGridLayout
没有插入小部件的方法,因此如果您希望消息栏位于对话框顶部,则必须为消息栏留出空间。您可能还需要确保消息栏跨越对话框的整个宽度。请参阅 QGridLayout.addWidget 的文档了解更多详情。
对于 QHBoxLayout
来说要简单得多 - 只需将现有布局放入 QVBoxLayout
布局中,然后按上述方式进行即可。
关于python - 将 QgsMessageBar 与 ui 文件合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489425/