Python передача значений из метода в другой метод - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть проблема, которая сводит меня с ума.

У меня есть 2 модуля Main.py и Writeagile.py

на main.py У меня есть класс Ui_MainWindow, который содержит весь мой пользовательский интерфейс.

в Ui_MainWindow У меня есть метод"on_click_fetchUser":

def on_click_fetchUser(self):
    _translate = QtCore.QCoreApplication.translate
    api = AgileApi()
    user_email = self.search_agile.text()

    if "@" and "." not in user_email:
        msg = QMessageBox()
        msg.setIcon(QMessageBox.Warning)
        msg.setText("wrong Email")
        msg.exec_()
    else:
        api.fetchUser(email=user_email)

api.fetchUser(email=user_email) входит в Writeagile.py и в метод fetchUser:

def fetchUser(self,email):

    msg = QMessageBox()
    msg.setIcon(QMessageBox.Warning)
    agile_user = self.agileCRM("contacts/search/email/{}".format(email), "GET", None, "application/json")  
    ui = Ui_MainWindow()
    MainWindow = QtWidgets.QMainWindow()
    ui.setupUi(MainWindow)
    try:
        fetch_user = json.loads(str(agile_user))
        if email in fetch_user['properties'][4]['value']:
            first = (fetch_user['properties'][0]['value'])
            last = (fetch_user['properties'][1]['value'])
            email = (fetch_user['properties'][4]['value'])

            return ui.agile_ui(first=first,last=last,email=email)

    except ValueError:
        return {msg.setText("User not found in Agile") ,  msg.exec_()}

Это работает нормально, и информация Json, которую я хочу получить,извлекается и возвращается к новому методу, который находится в Ui_MainWindow, agile_ui:

def agile_ui(self,first,last,email):
    _translate = QtCore.QCoreApplication.translate
    print(first,last,email)

    self.first_name.setText(_translate("MainWindow", "{}".format(first)))
    self.last_name.setText(_translate("MainWindow", "{}".format(last)))
    self.email.setText(_translate("MainWindow", "{}".format(email)))

Пока все работает так, как я хочу, и Print дает мне именно ту информацию, которую я хочу.

НО теперь моя проблема начинается!Когда метод agile_ui () «инициируется» из writeagile.fetchUser () Атрибуты, которые меняют текст для меня:

self.first_name.setText(_translate("MainWindow", "{}".format(first)))
self.last_name.setText(_translate("MainWindow", "{}".format(last)))
self.email.setText(_translate("MainWindow", "{}".format(email)))

Ничего не делать !!Нет ошибок или ничего!ничего не происходит.

Если я удаляю все, что передано из writeagile.fetchUser, и запускаю agile_ui в Ui_MainWindow, атрибуты работают и setText работает.

Надеюсь, кто-нибудь может мне помочь.С наилучшими пожеланиями Фредрик

1 Ответ

0 голосов
/ 27 сентября 2018

Разобрался.

необходимо изменить возвращаемое значение только на значение, а затем использовать возвращаемое значение в методе on_click_fetchUser:

fetch_user = json.loads(str(agile_user))
if email in fetch_user['properties'][4]['value']:
    first = (fetch_user['properties'][0]['value'])
    last = (fetch_user['properties'][1]['value'])
    email = (fetch_user['properties'][4]['value'])

    return first,last,email


def on_click_fetchUser(self):
    _translate = QtCore.QCoreApplication.translate
    api = AgileApi()
    user_email = self.search_agile.text()

    if "@" and "." not in user_email:
        msg = QMessageBox()
        msg.setIcon(QMessageBox.Warning)
        msg.setText("Ugyldig Email")
        msg.exec_()
    else:
        result = (api.fetchUser(email=user_email))
        self.first_name.setText(_translate("MainWindow", "{}".format(result[0])))
        self.last_name.setText(_translate("MainWindow", "{}".format(result[1])))
        self.email.setText(_translate("MainWindow", "{}".format(result[2])))
...