Я загружаю csv по таймеру, используя Pyqt5 QNetworkManager. Функция, которая вызывает это, принадлежит внешнему классу. Мне нужно, чтобы результат запроса возвращался как объект в исходной вызывающей функции. Тем не менее, единственный способ, которым мне удалось получить объект, был с помощью оператора finish.connect. Мне нужен вывод обратно в исходную функцию.
class Model():
def __init__(self):
### These are my login credentials, pickled for safety
self.cred = pickle.load(open( "cred.p", "rb"))
def Request(self):
self.cred = pickle.load(open( "cred.p", "rb"))
url = 'https://obscuredforsafety.com'
req = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
self.nam = QtNetwork.QNetworkAccessManager()
self.nam.authenticationRequired.connect(self.authenticate)
### This function actually works, but I cannot get the return value back into this scope
ret = self.nam.finished.connect(self.handleResponse)
self.nam.get(req)
### All I need is to return this self.df object so I can send it back to my calling class
try:
### This is where I need my response object to return ###
print(self.df)
except:
pass
### This part works well
def authenticate(self, reply, auth):
auth.setUser(self.cred[0])
auth.setPassword(self.cred[1])
### Handles the response and builds the dataframe properly
### How can I get this self.DF back into the original function so I can return it
def handleResponse(self, reply):
er = reply.error()
if er == QtNetwork.QNetworkReply.NoError:
bytes_string = str(reply.readAll(), 'utf-8')
csv = StringIO(bytes_string)
self.df = pd.read_csv(csv, sep = ',')
else:
print("Error occured: ", er)
print(reply.errorString())