Python:“ PyQt5.QtCore.pyqtSignal”对象没有属性“ connect”

克莱门特

我在通过线程的pyqtSignal遇到问题。我收到以下错误:

AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'

在命令上:

 CALCULS_AE.Uni_finished.connect(self.getFinishThread())

该程序基本上是使用PyQt Designer设计的主窗口,并通过线程调用一些不同的函数。我想在MainWindow代码中获得某些线程的完成信号(以显示结果等)。以下是解释其体系结构的一小部分代码。

主要代码:

class MainWindow(QMainWindow, Ui_MainWindow):

   def __init__(self):
       #Some code...
       self.Button.clicked.connect(self.launch_Calculation_clicked)

   def launch_Calculation(self):
       AE_Uni_thread = threading.Thread(target = CALCULS_AE.Calcul_AE_Uni, args = (arg1, arg2, arg3, arg4)) # Calculs_AE is a class defined in another file
       CALCULS_AE.Uni_finished.connect(self.getFinishThread()) # Another function doing some other stuff with the thread's results
       AE_Uni_thread.start()

CALCULS_AE类开始计算:

class CALCULS_AE(object):
 #Signals
    Uni_finished = QtCore.pyqtSignal()
    Reb_finished = QtCore.pyqtSignal()

    def __init__(self):
        # Some Code

    def Calculs_AE_Uni(self, arg1, arg2, arg3, arg4):
        # Some Code launching the calculation
        self.Uni_finished.emit()

PS:pyqtSignals在文档中指定的类级别上定义。

谢谢 !

永乐

您遇到以下错误:

  • 您必须创建一个Calculs对象: self.calculs = Calculs()

  • 如果要使用threadingPython的本机,则没有意义QThread,因为有2个元素都可以这样做,因此将更QThread改为QObject

  • 将信号连接到功能时,必须传递功能名称,而不是经过评估的功能。

不正确的

[...].finished.connect(self.getFinishThread())

[...].finished.connect(self.getFinishThread)
  • target 需要功能的名称,而不是评估的功能。

  • 如果您不打算修改Calculs该类的构造函数,则无需实现它。

码:

class Test(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        Ui_MainWindow.__init__(self)
        self.setupUi(self)      
        self.pushButton.clicked.connect(self.Launch_Test)

    def Launch_Test(self):
        self.calculs = Calculs()
        self.calculs.finished.connect(self.getFinishThread)
        test_thread = threading.Thread(target = self.calculs.Calcul_Test)
        test_thread.start()

    def getFinishThread(self):
        print('Good ! \n')
        #os.system('pause')

class Calculs(QObject):
    finished = pyqtSignal()

    def Calcul_Test(self):
        print('Test calcul\n')
        self.finished.emit()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PyQt4.QtCore.pyqtSignal对象没有属性“连接”

'PySide.QtCore.Signal'对象没有属性'connect'

'PySide2.QtCore.Signal'对象没有属性'connect'

AttributeError: 'PyQt4.QtCore.pyqtBoundSignal' 对象没有属性 'Emt'

带有 Python PyQT5 的骰子滚轮

PyQt5 QGraphicsView对象没有属性“ resetMatrix”?

对象中的AttributeError没有属性'toHtml'-pyqt5

AttributeError:“页面”对象没有属性“ myattributename” PYQT5

PyQt5:对象没有属性“连接”

'表格'对象没有属性'tableWidget'PyQt5

pyqt5 使用 clicked.connect 加载小部件是否有限制?

PySide:“ PySide.QtCore.Signal”对象没有属性“ emit”

使用 Python 的 PYQT5

Python PyQt5 webview 无法打开没有 url 创建的选项卡

活动期间GUI是否没有更改?(Python3.6,PyQt5)

PyQt5安装错误(QtCore模块错误:无法创建C ++代码)

“ ImportError:无法导入名称QtCore”或来自PyQt5的任何其他模块

Pyqt5:RangeSlider 对象

python PyQT5中带有外来字符的Python正则表达式

PyQt5:RecursionError:调用Python对象时超出了最大递归深度

attributeerror模块“时间”没有属性“时钟”(pyqt5)

Python - pyqt5 - 将文本设置为具有不同颜色的 qtextbrowser

有什么方法可以在PyQt5 Python中显示360度图像?

是否有 pyqt5 方法将 python 字符串转换为 QByteArray?

Python PyQt5 QTextBrowser中的所有文本都变得“活跃”

我有 Python PyQt5 问题,由于某些原因我无法运行代码

pyqt5,正在接收AttributeError:“ QMainWindow”对象没有属性“ browseSlot”

PyQt5 QTreeView.clear() AttributeError: 'QTreeView' 对象没有属性 'clear'

对象没有属性PyQt5 | 卸下最大化按钮