如何从connect函数中获取返回值

2024-04-16 17:16:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到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,login函数将loginClick的值更改为True,并且由于计时器而在后台运行的函数checkFinish将返回False,问题是如何在启动计时器的注册表函数中获取该False值


Tags: 函数fromimportfalsedefconnectloginglobal
1条回答
网友
1楼 · 发布于 2024-04-16 17:16:49

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

# ...
dlg.timer = QTimer(dlg, interval=5)
def onTimeout():
    if checkFinish():
        print("finish")
dlg.timer.timeout.connect(onTimeout)
dlg.timer.start()
# ...

相关问题 更多 >