PyQt5 关联窗口关闭,主窗口关闭-子窗口跟着关闭
2019-08-27 python 5305
from PyQt5.QtWidgets import QWidget, QMainWindow from PyQt5.QtCore import QObject,pyqtSignal def Singletonfunc(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singletonfunc class Signal(QObject): _mainClose = pyqtSignal(int) # 关联窗口 - 主窗口 class RMainWindow(QMainWindow): def __init__(self): super().__init__() self._signal = Signal() def closeEvent(self, e): print("close.. main window") self._signal._mainClose.emit(1) super().closeEvent(e) # 关联窗口 - 主窗口 class RMainWidget(QWidget): def __init__(self): super().__init__() self._signal = Signal() def closeEvent(self, e): print("close.. main widget") self._signal._mainClose.emit(1) super().closeEvent(e) # 关联窗口 widget - 子窗口 class RSubWidget(QWidget): def __init__(self): super().__init__() _signal = Signal() _signal._mainClose[int].connect(self._sub_close) def _sub_close(self, flag): if flag: print("sub close") self.close() # 关联窗口 mainwindow - 子窗口 class RSubMainWindow(QMainWindow): def __init__(self): super().__init__() _signal = Signal() _signal._mainClose[int].connect(self._sub_close) def _sub_close(self, flag): if flag: print("sub close") self.close()
很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论