TypeError: arguments did not match any overloaded call: start(self, QRunnable, priority: int = 0): argument 1 has unexpected type 'QThread' start(self, Callable[[], None], priority: int = 0): argument 1 has unexpected type 'QThread'怎么解决?
时间: 2024-03-12 10:44:28 浏览: 459
这个错误提示是因为你在调用 `start()` 方法时传入了一个 `QThread` 对象,但是 `start()` 方法的参数类型不匹配。
`start()` 方法有两个重载版本,一个是接受一个 `QRunnable` 对象作为参数,另一个是接受一个没有参数的可调用对象 `Callable[[], None]` 作为参数。
你需要根据你的需求选择正确的参数类型传入 `start()` 方法。如果你想要启动一个线程,可以通过创建一个 `QThread` 对象,将你的线程逻辑实现为一个 `QRunnable` 对象,然后将 `QRunnable` 对象传入 `start()` 方法来启动线程。
以下是一个示例代码:
```python
import sys
from PyQt5.QtCore import QRunnable, QThreadPool
class MyRunnable(QRunnable):
def run(self):
# 线程逻辑实现
print("Hello from thread")
if __name__ == '__main__':
app = QApplication(sys.argv)
runnable = MyRunnable()
QThreadPool.globalInstance().start(runnable)
sys.exit(app.exec_())
```
如果你想要启动一个没有参数的可调用对象,可以将该对象传入 `start()` 方法。以下是一个示例代码:
```python
import sys
from PyQt5.QtCore import QThreadPool
def my_function():
# 线程逻辑实现
print("Hello from thread")
if __name__ == '__main__':
app = QApplication(sys.argv)
QThreadPool.globalInstance().start(my_function)
sys.exit(app.exec_())
```
希望这些示例代码可以帮助你解决问题。
阅读全文