Подключиться к методу/функции при закрытии QTextEdit в PyQt

Как я могу подключиться к функции при закрытии окна виджета QTextEdit?

Мой код:

self.textBox = QtGui.QTextEdit()
self.textBox.setWindowTitle('Editor')
self.textBox.setGeometry(100, 100, 1000, 500)
self.textBox.show()
self.textBox.???.connect(self.someFunc)   #????

If I do

self.textBox.close().connect(self.someFunc)

Он сразу закрывается и говорит

AttributeError: 'bool' object has no attribute 'connect'

If I do

self.textBox.closeEvent(self.someFunc)

Это говорит

TypeError: QTextEdit.closeEvent(self.someFunc): argument 1 has unexpected type 'method'

Как я могу это решить?


person learncode    schedule 30.12.2016    source источник
comment
Какое действие вы имеете ввиду закрыть?   -  person eyllanesc    schedule 31.12.2016
comment
Или вы имеете в виду закрытие виджета, который его содержит?   -  person eyllanesc    schedule 31.12.2016
comment
Это текстовый редактор, который я реализовал, и он открывается из моей панели меню в главном окне, он открывается как новое окно, поэтому, когда редактор открывается и вводит что-то в окно, затем закрывает окно редактора (QTextEdit), тогда мне нужно событие закрытия для быть связанным с функцией.   -  person learncode    schedule 31.12.2016
comment
* Итак, когда пользователь открывает и вводит что-то в окно, а затем закрывает его   -  person learncode    schedule 31.12.2016
comment
Я лично не люблю обезьяньи патчи, но self.textBox.closeEvent = self.someFunc сделает то, что вы хотите.   -  person ekhumoro    schedule 31.12.2016


Ответы (1)


Это не самый элегантный способ, но он работает, другой способ — наследоваться от QTextEdit и перезаписывать метод closeEvent, выдавая сигнал.

Использовать:

    self.textBox = QTextEdit()
    self.textBox.setWindowTitle('Editor')
    self.textBox.setGeometry(100, 100, 1000, 500)
    self.textBox.show()
    self.textBox.closeEvent = self.function

def function(self, e):
    print("test")
person eyllanesc    schedule 30.12.2016