gpt4 book ai didi

python - PyQt5 关闭事件方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:44 33 4
gpt4 key购买 nike

我目前正在学习如何使用 pyqt5 构建应用程序并遇到了 closeEvent 方法的一些问题,该方法被覆盖,因此 QMessageBox 对象要求用户进行确认。它似乎适用于 X 按钮 - 当操作被确认时事件被“接受”,当取消按钮被点击时事件被“取消”。但是,当我使用下拉文件菜单中的退出按钮时,无论我单击哪个按钮,程序都会以退出代码 1 关闭。看起来很奇怪,因为我在这两种情况下都使用相同的 closeEvent 方法。

import sys

from PyQt5.QtWidgets import QApplication, QMessageBox, QMainWindow, QAction


class window(QMainWindow):
def __init__(self):

super().__init__()

def createUI(self):


self.setGeometry(500, 300, 700, 700)

self.setWindowTitle("window")


quit = QAction("Quit", self)
quit.triggered.connect(self.closeEvent)

menubar = self.menuBar()
fmenu = menubar.addMenu("File")
fmenu.addAction(quit)

def closeEvent(self, event):
close = QMessageBox()
close.setText("You sure?")
close.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
close = close.exec()

if close == QMessageBox.Yes:
event.accept()
else:
event.ignore()

main = QApplication(sys.argv)
window = window()
window.createUI()
window.show()
sys.exit(main.exec_())

感谢您的建议!

最佳答案

当您单击按钮时,程序会调用您的函数,但使用不同的 event 对象,该对象没有 accept()ignore()所以你会收到错误消息,程序以退出代码 1 结束。

您可以分配 self.close,程序将使用正确的事件对象调用 closeEvent()

quit.triggered.connect(self.close)

关于python - PyQt5 关闭事件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40622095/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com