Python将值从一个方法传递到另一个方法

时间:2018-09-26 17:20:24

标签: python python-3.x class oop self

我有一个使我发疯的问题。

我有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(打印)为我提供了我想要的信息。

但是现在我的问题开始了! 从writeagile.fetchUser()“启动”方法agile_ui()时 这些属性将为我更改文本:

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传递的所有内容, 并在Ui_MainWindow中启动agile_ui,属性起作用,而setText起作用。

希望任何人都可以帮助我。 最好的问候弗雷德里克

1 个答案:

答案 0 :(得分:0)

弄清楚了。

需要将返回值更改为仅值, 然后在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])))