Я знаю, что в общем случае QObject()
экземпляры должны создаваться в главном потоке.Я также знаю, что после создания вы можете переместить QObject()
из основного потока в другой:
можно найти официальные документы Qt здесь
# Worker-object approach
# -----------------------
# Note: these codelines execute in the main thread.
workerThread = QThread()
workerObj = WorkerObj()
workerObj.moveToThread(workerThread)
В настоящее время я сталкиваюсь с совершенно противоположной проблемой.У меня есть QObject()
, созданный в (неосновной) QThread
.Я хочу переместить его в основной поток, например:
# Move a QObject() to the main thread
# ------------------------------------
# Note: these codelines execute in some QThread
myObj = QObject()
myObj.moveToThread(threading.main_thread())
Я получаю следующую ошибку:
TypeError: moveToThread (self, QThread): аргумент 1 имеет неожиданный аргументвведите '_MainThread'
Возможно, я получаю сообщение об ошибке, поскольку основной поток не является подлинным QThread
.Что я должен сделать, чтобы это работало?
РЕДАКТИРОВАТЬ:
Видимо, был правильный ответ в документации функции moveToThread()
.Это довольно неловко.Мои искренние извинения.В следующий раз я буду более осторожен.