在Qt中使用任何“return”语句会产生什么影响

2024-04-20 11:00:39 发布

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

例如,我将QPushButton的“clicked”信号连接到一个名为“func\u with\u return”的函数。假设此函数中只有三条语句:第一条是“print('start')”,第二条是“return 1”,最后一条是“print('end')”。这是我基于PyQt5的python代码。你知道吗

import sys
from PyQt5.QtWidgets import QApplication, QFrame, QPushButton

class MyWindow(QFrame):    
    def __init__(self):
        super(MyWindow, self).__init__()
        self.layout_init()
        self.layout_manage()

    def layout_init(self):
        self.setFixedSize(800, 600)
        self.button01 = QPushButton('click!', self)
        self.button01.setFixedSize(100, 100)
        self.button01.clicked.connect(self.func_with_return)

    def layout_manage(self):
        pass

    def func_with_return(self):
        print('---------func_with_return starts---------')
        return 1
        print('---------func_with_return ends---------')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    sys.exit(app.exec_())

基本上,点击这个按钮后没有错误。我很好奇的是,在一个“插槽”中,由“return”引起的中断。此中断是否会与信号槽机制发生冲突?你知道吗


Tags: 函数selfreturn信号initdefwithsys
1条回答
网友
1楼 · 发布于 2024-04-20 11:00:39

没有。信号只调用函数,如果函数返回Qt将不使用它。你知道吗

另一方面,在Qt/PyQt中,如果使用decorator @QtCore.pyqtSlot(),那么函数就是一个。在你的例子中,这是一个简单的函数。即使这样,对于一个信号,也不会提供返回所调用的插槽或函数的数据。你知道吗

此中断是否会与信号槽机制发生冲突?

不,没有碰撞。返回到开头、中间或结尾是不相关的,请记住每个函数都会返回一些内容(如果不使用return,则函数将在结尾隐式返回None)。你知道吗


另一方面,在GUI中,函数的任务必须很轻,如果任务很重,则必须在另一个线程中执行。你知道吗

相关问题 更多 >