Корректна ли моя передача объектов в qt слот?
При открытии второго окна я совершаю манипуляции с определенным виджетом(динамически создаваемым, что важно), и с ним же мне нужно совершить другие манипуляции после закрытия второго окна. Я реализовал это передав объект виджета в класс второго окна и возвратив его при закрытии сигналом. Я всё ещё плыву в фундаментальных принципах работы объектов в программировании, так что хочу узнать, корректен ли такой метод и могут ли всплыть какие-нибудь неожиданные нюансы?
Пример моей реализации:
from PyQt5 import QtWidgets
import sys
from PyQt5.QtCore import pyqtSignal, QObject
class SecondWindow(QtWidgets.QWidget):
close_signal = pyqtSignal(QObject)
def __init__(self, textbrowser):
self.textbrowser = textbrowser
super(SecondWindow, self).__init__()
self.setWindowTitle('Second')
self.button = QtWidgets.QPushButton('Close', self)
self.button.clicked.connect(self.close_foo)
def close_foo(self):
self.close_signal.emit(self.textbrowser)
self.close()
class Window(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(300, 300)
box = QtWidgets.QVBoxLayout(self)
textbrowser = QtWidgets.QTextBrowser()
textbrowser.setReadOnly(False)
self.button = QtWidgets.QPushButton('Open')
self.button.clicked.connect(lambda sw, v=textbrowser: self.second_window(v))
box.addWidget(textbrowser)
box.addWidget(self.button)
def second_window(self, textbrowser):
textbrowser.setStyleSheet('background-color: grey;')
textbrowser.setReadOnly(True)
self.second_window = SecondWindow(textbrowser)
self.second_window.show()
self.second_window.close_signal.connect(self.foo)
def foo(self, textbrowser):
textbrowser.setStyleSheet('background-color: white;')
textbrowser.setReadOnly(False)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Window()
w.show()
app.exec_()