QNetworkReply is not emitting finished, errorOccurred or redirected signals on PySide6.
Below is a code snippet to show the problem:
from typing import Callable
import PySide6.QtNetwork as QtNetwork
from PySide6 import QtCore, QtGui, QtWidgets
import sys
def load_img_from_url(url_str, callback):
# type: (str, Callable[[QtGui.QImage], None]) -> None
url = QtCore.QUrl(url_str)
if url.isValid():
QtCore.qDebug("load_img_from_url: url is valid => " + url.url())
QtNetwork.QNetworkProxyFactory.setUseSystemConfiguration(True)
request = QtNetwork.QNetworkRequest(url)
manager = QtNetwork.QNetworkAccessManager(None)
def handle_reply(reply):
# type: (QtNetwork.QNetworkReply) -> None
print("reply object => ", reply)
if reply.error() == QtNetwork.QNetworkReply.NetworkError.NoError:
print("QNetworkReply No error")
response_data = reply.readAll()
image = QtGui.QImage()
if image.loadFromData(response_data):
QtCore.qDebug("load_img_from_url: Image Loaded")
if callable(callback):
callback(image)
else:
QtCore.qDebug("load_img_from_url: Image Not Loaded")
else:
print("QNetworkReply Error!")
manager.finished.connect(lambda r: print("manager reply", r))
reply = manager.get(request)
reply.finished.connect(handle_reply)
reply.redirected.connect(lambda r: print("redirected", r))
def handle_error(error):
print("QNetworkReply Error")
print(error)
reply.errorOccurred.connect(handle_error)
QtCore.qDebug("load_img_from_url: QNetworkReply isFinished? "+ str(reply.isFinished()))
class TestWindow(QtWidgets.QMainWindow):
def __init__(self, parent) -> None:
super().__init__(parent)
load_img_from_url("https://cdn.pixabay.com/photo/2014/06/03/19/38/road-sign-361514_960_720.png", None)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
widget = TestWindow(None)
widget.show()
sys.exit(app.exec())
I can't seem to find out what the problem is.