Форум сайта python.su
Есть главное окно из него создаю другое окно (MainWindow).
Требуется при закрытии вспомогательного окна (на крестик в углу)отлавливать факт закрытия в главном окне.
Класс вспомогательного окна создаю так:
#консольное окно
class Consol(QtGui.QMainWindow,Ui_Con_window):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
вот так создаю объект в главном приложении
главное окно
class MWindow(QtGui.QMainWindow,Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
#создаем консоль
self.ConsolObj = Consol()
вот так хотел отлавливать сигнал:
QtCore.QObject.connect(self.ConsolObj, QtCore.SIGNAL(“destroyed()”), self.closeCON)#
……..
def closeCON(self):
self.pushButton_19.setText(_fromUtf8(“Закрыть консольное окно”))
такой вариант не работает….закрываю консольное окно по крестику в углу…хочу отловить факт закрытия в основном приложении….как это можно сделать?
Офлайн
Нет такого сигнала. Нужно переопределить closeEvent и в нем эмитить сигнал.
class Consol(QtGui.QMainWindow,Ui_Con_window): windowClose = QtCore.pyqtSignal() ... def closeEvent(self, event): self.windowClose.emit() return super(Consol, self).closeEvent(event) ... self.consoleObj.windowClose.connect(self.do_something_on_child_window_close)
Офлайн
reclosedev
Нет такого сигнала. Нужно переопределить closeEvent и в нем эмитить сигнал.class Consol(QtGui.QMainWindow,Ui_Con_window): windowClose = QtCore.pyqtSignal() ... def closeEvent(self, event): self.windowClose.emit() return super(Consol, self).closeEvent(event) ... self.consoleObj.windowClose.connect(self.do_something_on_child_window_close)
Отредактировано Vad (Сен. 11, 2012 08:49:15)
Офлайн
VadВызываем имплементацию метода базового класса, которая по умолчанию просто принимает это событие, позволяя закрыть окно. Т.е. можно было написать event.accept().
А что мы делаем этим вызовом: return super(Consol, self).closeEvent(event)
Офлайн
reclosedevРаботает без этого вызова и позволяет закрыть окно.
event.accept()
Офлайн