美文网首页程序员首页投稿(暂停使用,暂停投稿)编程学习
PyQt5学习笔记(五):弹出对话框请求确认

PyQt5学习笔记(五):弹出对话框请求确认

作者: 链球选手 | 来源:发表于2016-04-22 04:37 被阅读9324次

    在很多应用中,如果要操作一个关键的功能,比如退出应用、删除文件的时候,往往会有消息弹出窗口请求确认,让我们用PyQt弹出消息吧!本文由Cescfangs 译自ZetCode pyqt5系列教程 并作适当修改。

    先上源代码:

    import sys
    from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox
    
    class exp(QWidget):
    
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
    
            self.setGeometry(200, 300, 400, 400)
            self.setWindowTitle('Quit')
            self.show()
    
        def closeEvent(self, event):
            reply = QMessageBox.question(self, 'Message', 'You sure to quit?',
                                         QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
    
            if reply == QMessageBox.Yes:
                event.accept()
            else:
                event.ignore()
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = exp()
        sys.exit(app.exec_())
    

    当我们关闭一个窗口时,就会触发一个QCloseEvent的事件,正常情况下会直接关闭这个窗口,但是我们不希望这样的事情发生,所以我们需要重新定义QCloseEvent

     def closeEvent(self, event):
            reply = QMessageBox.question(self, 'Message', 'You sure to quit?',
                                         QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
    

    我们通过QMessageBox创建了一个带有'Yes'和'No'的对话框,括号内的第一个字符(Message)会显示在信息窗口的上方,第二个字符(You sure to quit?)则是出现在信息窗口的正文中,第三个参数则说明了两个按钮在对话框上的布置,最后一个参数确定了默认选项,也就是弹出对话框的时候,键盘的默认焦点所在。最后返回的结果会存储在reply中。

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

    如果我们按下了'Yes',那么这个窗口就会被关闭,如果我们按下的是'No',那么系统会忽视我们点击‘X’的这个事件。

    对话框

    相关文章

      网友评论

        本文标题:PyQt5学习笔记(五):弹出对话框请求确认

        本文链接:https://www.haomeiwen.com/subject/yvtxrttx.html