如何从连接函数获取返回值

问题描述 投票:0回答:1

我想获取checkFinish函数的返回值,目的是在我得到的值为False时执行“某些操作”,有没有办法获取由connect函数启动的函数的返回值? (因为按钮的方法可能相同,所以同时询问按钮)。

代码:

from PyQt5 import QtWidgets, uic
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
from functools import partial

registered = False
loginClick = False

def login():
    global loginClick
    loginClick = True


def checkFinish():
    global registered, loginClick
    if loginClick or registered:
        return False
    else: 
        return True


def register_form():
    global registered, loginClick
    app = QtWidgets.QApplication([])
    dlg = uic.loadUi("registerForm.ui")
    dlg.usernameLine.setFocus()
    dlg.logInButton.clicked.connect(login)
    dlg.timer = QTimer(dlg, interval=5)
    dlg.timer.timeout.connect(checkFinish) # Get the return value from here.
    #if dlg.timer.timeout.connect(checkFinish): do something example
    dlg.timer.start()
    dlg.show()
    app.exec()

假设我单击logInButton,登录函数会将loginClick的值更改为True,并且由于计时器而在后台运行的Function checkFinish将返回False,同样的问题是如何在register_form中获取该False值我在哪里启动计时器的功能。

我想获得checkFinish函数的返回值,目的是在我得到的值为False时做一些事情,有没有办法让连接启动的函数的返回值...] >

python python-3.x pyqt5
1个回答
0
投票

该信号仅用于调用一个函数并向其传递一些参数,因此您无法获得所调用函数的结果。正确的逻辑是调用另一个评估初始函数的函数:

# ...
dlg.timer = QTimer(dlg, interval=5)
def onTimeout():
    if checkFinish():
        print("finish")
dlg.timer.timeout.connect(onTimeout)
dlg.timer.start()
# ...
© www.soinside.com 2019 - 2024. All rights reserved.