我正在使用PyQt开发一个基于MVC模型的GUI。所以我有3个文件。
view.py
model.py
controller.py
我想在用户退出GUI时从控制器中执行一个方法,所以当它捕捉到CloseEvent
。
一个类似的代码看起来是这样的。
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
class window(QMainWindow):
def __init(self):
super().__init__()
def closeEvent(self, evnt):
self.exit_msg = QMessageBox.question(
self, 'Avant de quitter', 'Would you like to save before leaving ?',
QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
if self.exit_msg == QMessageBox.Yes:
ctrl.done()
evnt.accept()
elif self.exit_msg == QMessageBox.No:
evnt.accept()
else:
evnt.ignore()
class ctrl():
def __init__(self, view):
self._view = view
def done(self):
print('I sent the mail')
def main():
app = QApplication(sys.argv)
view = window()
view.show()
controller = ctrl(view = view)
app.exec()
if __name__ == '__main__':
main()
当然,ctrl.done()
一行并不工作,但它代表了我想做的事情。
我首先在窗口类中实现了它,但我需要从模型文件中获得数据,所以它破坏了MVC模型,因为我没有找到一种方法,使控制器在模型和视图之间用控制器沟通正确的信息。
主要要记住的是,我想让GUI在用户点击exit_msg
上的是时发送一个邮件(例子中的方法done()
)。这个邮件包含来自模型类的数据。我怎么做呢?
你能帮助我吗?