我是PyQt的新手,想开发简单的应用程序。我用Qt设计器设计了简单的ui。如果用户在单击X或、exit“”按钮或从菜单中选择exit时确实要退出应用程序,我需要额外的确认。
代码如下:
import sys
from PyQt4 import QtGui, QtCore, uic
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = uic.loadUi('main_window.ui')
self.ui.show()
self.ui.btnExit.clicked.connect(self.close)
self.ui.actionExit.triggered.connect(self.close)
def closeEvent(self, event):
print("event")
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
def main():
app = QtGui.QApplication(sys.argv)
win = MainWindow()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
问题是:
我在SO上找到了一些问题并搜索了教程,但是没有任何内容涉及到这样的问题。我做错什么了?
对我来说很管用,加上这句话
所以你的代码是:
另一个简单的解决方案是,每当用户单击关闭按钮时,使用
app.aboutToQuit.connect(self.close_event)
在closeEvent
函数中运行代码。此处的示例代码
注意你在做:
实际的窗口是
win
内的实例属性(ui
)。不是win
本身。而且它没有closeEvent
实现。^{} 可以在实例中加载
.ui
文件。你应该用这个。有了它,你的代码将是:
注意:我不喜欢
show
在__init__
中使用窗口。直截了当更好。所以,我把它移到了main
。请随意修改。相关问题 更多 >
编程相关推荐