我想获取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,问题再次出在如何在窗口中获取False值。我启动计时器的register_form函数。
答案 0 :(得分:2)
该信号仅用于调用一个函数并将其传递一些参数,因此您无法获得所调用函数的结果。正确的逻辑是调用另一个评估初始函数的函数:
# ...
dlg.timer = QTimer(dlg, interval=5)
def onTimeout():
if checkFinish():
print("finish")
dlg.timer.timeout.connect(onTimeout)
dlg.timer.start()
# ...