【发布时间】:2018-09-24 05:09:13
【问题描述】:
我正在学习 pyqt5,特别是如何将它与 QT Designer 一起使用。我有点关注 HERE 的教程。但是在本教程中,他们使用 pyuic5 将 XML 接口转换为 Python 代码,而我尝试使用 uic.loadUi("myui.ui") 动态导入它。在本教程中,我们使用名为“browseSlot”的信号和槽编辑器定义了一个槽。 当我尝试运行/编译时,在
行dlg = uic.loadUi("myui.ui")
我得到错误:
AttributeError: 'QMainWindow' 对象没有属性 'browseSlot'
我认为发生的事情是 QT Designer 将信号连接到插槽“browseSlot”,但由于 myui.ui 中未定义“browseSlot”方法,因此引发错误,因为没有办法解释器知道我指的是 UI 界面文件之外的方法。 (在这种情况下,在加载接口的模块中)。据我所知,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())
【问题讨论】: