【PyQt5】問題解決:QObject::moveToThread: Current thread (0x...) is not the object's thread (0x...). Cannot move to target thread (0x...)

問題描述

當我們撰寫 pyqt5 程式時,出現以下 error 的解決辦法

QObject::moveToThread: Current thread (0x55e28fa548d0) is not the object's thread (0x55e28fceb860). Cannot move to target thread (0x55e28fa548d0)

記憶體位置可能不同,但解法大致是相同的。

解法

個人試過有成功的方法

簡單來說,這是 OpenCV 版本過新導致的環境問題,
網路上普遍的解法有看到

    - (個人有成功的方法) 使用 conda 安裝 pyqt,不要使用 pip install 安裝

建議先用 anaconda 建立一個乾淨的環境再來做這件事,
建立好乾淨的環境後,安裝 conda 版本的 pyqt,
再使用 pip 安裝 OpenCV

conda install pyqt
pip install opencv-python

其他網友的解法 (個人沒試過 or 試過失敗)

    - 使用 pip 降 OpenCV 的版本 (4.3.0.36)
pip uninstall opencv-python
pip install opencv-python==4.3.0.36
pip list | grep opencv-python
    - 移除 pip OpenCV 改用 apt-get 安裝 OpenCV
sudo pip uninstall opencv-python
sudo apt-get install libopencv-dev python-opencv

Reference

Licensed under CC BY-NC-SA 4.0