Какой эффект будет иметь место при использовании любого оператора return в слоте Qt - PullRequest
0 голосов
/ 27 февраля 2019

Например, я подключаю сигнал «нажал» QPushButton к функции с именем «func_with_return».Предполагается, что в этой функции всего три оператора: первый - «print (« start »)», второй - «return 1», а последний - «print (« end »)».Вот мой код Python, основанный на PyQt5.

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_())

В принципе, после нажатия на эту кнопку не возникает ошибки.Что меня интересует, так это прерывание, вызванное «возвратом» внутри «слота».Будет ли это прерывание сталкиваться с механизмом сигнала и слота?

1 Ответ

0 голосов
/ 27 февраля 2019

Отсутствует.Сигналы только вызывают функцию, если функция, возвращаемая Qt, не будет ее использовать.

С другой стороны, в Qt / PyQt говорится, что функция - это slot , если вы используетедекоратор @QtCore.pyqtSlot().В вашем случае это простая функция.Даже в этом случае сигнал не будет обслуживать данные, которые возвращают вызванный слот или функцию.

Будет ли это прерывание конфликтовать с механизмом сигнала и слота?

Нет, это такне иметь столкновения.Возврат в начало, середину или конец не имеет значения, помните, что каждая функция возвращает что-то (если вы не используете return, функция неявно вернет None в конце).


С другой стороны, в графическом интерфейсезадачи функций должны быть легкими, если они тяжелые, вы должны выполнить их в другом потоке.

...