python - pyqt5,接收属性错误: 'QMainWindow' object has no attribute 'browseSlot'

标签 python pyqt pyqt5

我正在学习 pyqt5,特别是如何将它与 QT Designer 一起使用。我有点遵循教程HERE 。然而,在本教程中,他们使用 pyuic5 将 XML 接口(interface)转换为 Python 代码,而我尝试使用 uic.loadUi("myui.ui") 动态导入它。在本教程中,我们使用名为“browseSlot”的信号和槽编辑器定义一个槽。 当我尝试运行/编译时,在

dlg = uic.loadUi("myui.ui")

我收到错误:

AttributeError: 'QMainWindow' object has no attribute 'browseSlot'

我认为发生的事情是 QT Designer 将信号连接到插槽“browseSlot”,但由于 myui.ui 中未定义“browseSlot”方法,因此抛出错误,因为没有办法解释器知道我指的是 UI 界面文件之外的方法。 (在本例中,在加载接口(interface)的模块中)。据我所知,QT Designer 只允许我将信号连接到插槽,而不是定义一个全新的信号。我认为在其他框架中处理这种情况的方式是,会有一个需要重写的抽象方法。那么在这种情况下我该怎么做才能让它发挥作用呢?

from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtCore import QObject, pyqtSlot
import sys

app = QtWidgets.QApplication([])
dlg = uic.loadUi("myui.ui")

@pyqtSlot
def returnPressedSlot():
    pass
@pyqtSlot
def writeDocSlot():
    pass
@pyQt
def browseSlot():
    pass

dlg.show()
sys.exit(app.exec())

最佳答案

属于所使用的类的插槽返回loadUi(),它们不是任何函数,因为如果您想使用loadUi()<,它们不会神奇地不连接它们 并实现这些方法,您必须从与您使用的模板相对应的类继承,在链接的示例中使用了主窗口,因此它必须从 QMainWindow 继承:

from PyQt5 import QtCore, QtGui, QtWidgets, uic


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        uic.loadUi("mainwindow.ui", self)

    @QtCore.pyqtSlot()
    def returnPressedSlot():
        pass

    @QtCore.pyqtSlot()
    def writeDocSlot():
        pass

    @QtCore.pyqtSlot()
    def browseSlot():
        pass


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

关于python - pyqt5,接收属性错误: 'QMainWindow' object has no attribute 'browseSlot' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52472975/

相关文章:

Python 在凯撒密码的暴力破解阶段提供仅可打印 ASCII 字符集 (32-126) 的协助

qt - 使用 drawBackground 在 QGraphicsView 上绘制背景

python - PyQt4 没有将我重定向到下一页

python - 获取 pandas 中包含特定值的列名

Python Twitter 工具同时搜索和流媒体

python - PyQt5 focusIN/Out 事件

python - 在QMainWindow中放置一个小部件,如何定位而不是setCentralWidget

python - PyQt5 布局的不等部分

python - Matplotlib imshow 与 EPS

pyqt - 设置包含QTableWidget的对话框窗口的最佳大小