【发布时间】:2016-01-08 11:27:07
【问题描述】:
我正在尝试创建自定义退出提示对话框,它应该执行以下操作:
- 它具有是、否按钮以及“保存新设置”复选框项
- 当我点击是时,对话框应该会关闭主程序
- 当我点击否时,对话框应该会回到主程序
所以,没什么特别的,但是当我点击 No 时,它会关闭主程序。
我试过用
app.setQuitOnLastWindowClosed(False)
但在这种情况下,主窗口被隐藏,程序“卡住”。
这是代码。
class AreYouSure(QtGui.QDialog):
saved = QtCore.pyqtSignal()
def __init__(self):
super(AreYouSure, self).__init__()
self.initUI()
self.retranslateUI()
self.initActions()
def initUI(self):
layout = QtGui.QVBoxLayout()
hor_lay = QtGui.QHBoxLayout()
self.label = QtGui.QLabel()
self.check_item = QtGui.QCheckBox()
self.yes = QtGui.QPushButton()
self.no = QtGui.QPushButton()
hor_lay.addWidget(self.yes)
hor_lay.addWidget(self.no)
layout.addWidget(self.check_item)
layout.addWidget(self.label)
layout.addLayout(hor_lay)
self.setLayout(layout)
def retranslateUI(self):
self.setWindowTitle("Exit")
self.label.setText("Are you sure to quit?")
self.yes.setText("Yes")
self.no.setText("No")
self.check_item.setText("Save e-mail/password")
def exit(self):
if self.check_item.isChecked():
self.saved.emit()
QtGui.QApplication.quit()
def initActions(self):
self.yes.clicked.connect(self.exit)
self.no.clicked.connect(self.close)
在主窗口中
def closeEvent(self, event):
a = AreYouSure()
a.saved.connect(self.saveDefaults)
a.exec_()
def saveDefaults(self):
'''save default email and password'''
self.settings = QtCore.QSettings(DEFAULT_NAME, QtCore.QSettings.IniFormat)
self.settings.setValue("email", self.email_edit.text())
self.settings.setValue("password", self.pass_edit.text())
我做错了什么?
【问题讨论】:
标签: pyqt pyqt4 python-3.4