python - PyQt5 - 如何将关闭键(红色 x)连接到函数

标签 python pyqt qt5 pyqt5

我正在尝试将关闭键(红色 x) 连接到一个函数(消息框)。到目前为止我尝试过的方法没有用;单击关闭键(红色 x) 时,我的代码将卡住。没有错误信息。

这是我的代码:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QMessageBox 
class Ui_MainWindow(QMainWindow):
   def setupUi(self, MainWindow):
      MainWindow.setObjectName("MainWindow")
      MainWindow.setWindowModality(QtCore.Qt.NonModal)
      MainWindow.resize(987, 746)
      MainWindow.setMinimumSize(567, 456)
      MainWindow.setMaximumSize(987, 746)
      font = QtGui.QFont()
      font.setPointSize(9)
      MainWindow.setFont(font)
      self.retranslateUi(MainWindow)
      QtCore.QMetaObject.connectSlotsByName(MainWindow)

   def retranslateUi(self, MainWindow):
      _translate = QtCore.QCoreApplication.translate
      MainWindow.setWindowTitle(_translate("MainWindow", ""))

   def Exit(self):
      reply = QMessageBox.question(self, 'Quit', 'Are You Sure to Quit?', QMessageBox.No| QMessageBox.Yes)

if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   app.aboutToQuit.connect(Ui_MainWindow.Exit)
   MainWindow = QtWidgets.QMainWindow()
   MainWindow.show()
   Ui = Ui_MainWindow()
   Ui.setupUi(MainWindow)
   sys.exit(app.exec_())

谢谢。

最佳答案

我不明白你为什么要创建一个 Ui_MainWindow 类,但这是一个我将如何做你想做的事情的例子:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QMessageBox


class MainWindow(QMainWindow):

   def __init__(self):
      super().__init__()
      self.setupUI()

   def setupUI(self):
      self.setObjectName("MainWindow")
      self.setWindowModality(QtCore.Qt.NonModal)
      self.resize(987, 746)
      self.setMinimumSize(567, 456)
      self.setMaximumSize(987, 746)
      font = QtGui.QFont()
      font.setPointSize(9)
      self.setFont(font)


   def closeEvent(self, event):
      reply = QMessageBox.question(self, 'Quit', 'Are You Sure to Quit?', QMessageBox.No | QMessageBox.Yes)
      if reply == QMessageBox.Yes:
         event.accept()
      else:
         event.ignore()


if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   mw = MainWindow()
   mw.show()
   sys.exit(app.exec_())

关于python - PyQt5 - 如何将关闭键(红色 x)连接到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659910/

相关文章:

python - 小部件调用show()后,resizeEvent不起作用

qt - 将 QMessageBox 移动到屏幕的右下角

c++ - QThread 的多个实例可以引用同一个操作系统线程吗?

python - 按特定顺序枚举篮子中的球

python - 如何将 Pandas isocalendar() 应用于日期列表而不是单个日期

python - pyqt的进度条

qt - 如何在QT5中自动隐藏QWidget?

python - 将成员/变量从 python 脚本传递到 shell 脚本或命令

python - 使用 pandas 按列分组,然后根据条件创建新列

Python PyQT 手势