四、PyQt对话框的使用

(五)对话框的使用

      平时在使用各种软件或者网站时,经常会看到各种各样的对话框,有的对话框可以与用户进行交互,而有的只是显示一些提示信息。使用PyQt5设计的窗口程序,同样支持弹出对话框,在PyQt5中,常用的对话框有QMessageBox内置对话框QFileDialog对话框QInputDialog对话框QFontDialog对话框QColorDialog对话框。重点需要掌握的是QMessageBox对话框、QFileDialog文件对话框、QInputDialog输入对话框。

1. QMessageBox:对话框

      我们平时使用软件时可以看到各种各样的对话框,例如,电脑管家的退出对话框如下:
在这里插入图片描述

1. 对话框的种类

      在PyQt5中,对话框使用QMessageBox类表示,PyQt5内置5种不同类型的对话框,分别是消息对话框问答对话框警告对话框错误对话框关于对话框,他们主要的区别是弹出的对话框中的图标不同

PyQt5内置的5种不同类型对话框
对话框类型 说明
QMessageBox.information() 消息对话框
QMessageBox.question() 问答对话框
QMessageBox.warning() 警告对话框
QMessageBox.critical() 错误对话框
QMessageBox.about() 关于对话框

2. 对话框的使用方法

      PyQt5内置的5种不同类型对话框在使用时是类似的,以消息对话框为例。消息对话框使用QMessageBox.information()表示,语法如下:

QMessageBox.information(QWidget, "Title", "Content", buttons, defaultbutton)
QMessageBox.information()方法的参数说明
参数 说明
QWidget self或者窗口对象,表示该对话框所属的窗口。
Title 字符串,表示对话框的标题。
Content 字符串,表示对话框种的提示内容。
buttons 对话框上要添加的按钮,多个按钮之间用”
defaultbutton 默认选中的按钮,该值可选,没有指定该值时,默认为第一个按钮。
对话框种的按钮种类
按钮种类 说明
QMessageBox.Ok 同意操作
QMessageBox.Yes 同意操作
QMessageBox.No 取消操作
QMessageBox.Abort 终止操作
QMessageBox.Retry 重试操作
QMessageBox.Ignore 忽略操作
QMessageBox.Close 关闭操作
QMessageBox.Cancel 取消操作
QMessageBox.Open 打开操作
QMessageBox.Save 保存操作

      关于对话框QMessageBox.about()中不能指定按钮。语法如下:

QMessageBox.about(QWidget, "Title", "Content")
示例:弹出5种不同的对话框

      打开Qt Designer设计器,新建一个窗口,在窗口中添加5个PushButton控件,并分别设置它们的文本为“消息框”、“警告框”、“问答框”、“错误框”、“关于框”,设计完成后保存为.ui文件,使用PyUIC工具将其转换为.py文件。在.py文件中,定义5个槽函数,分别使用QMessageBox类的不同方法弹出对话框。
关键代码如下:

        # 为按钮控件的clicked信号绑定自定义槽函数
        # 关联“消息框”按钮的方法
        self.pushButton.clicked.connect(self.info)
        # 关联“警告框”按钮的方法
        self.pushButton_2.clicked.connect(self.warn)
        # 关联“问答框”按钮的方法
        self.pushButton_3.clicked.connect(self.question)
        # 关联“错误框”按钮的方法
        self.pushButton_4.clicked.connect(self.critical)
        # 关联“关于框”按钮的方法
        self.pushButton_5.clicked.connect(self.about)

    # 自定义槽函数
    def info(self):    # 显示消息对话框
        QMessageBox.information(None, "消息", "这是一个消息对话框", QMessageBox.Ok)

    def warn(self):    # 显示警告对话框
        QMessageBox.warning(None, "警告", "这是一个警告对话框", QMessageBox.Ok)

    def question(self):   # 显示问答对话框
        QMessageBox.question(None, "问答", "这是一个问答对话框", QMessageBox.Ok)

    def critical(self):    # 显示错误对话框
        QMessageBox.critical(None, "错误", "这是一个错误对话框", QMessageBox.Ok)

    def about(self):   # 显示关于对话框
        QMessageBox.about(None, "关于", "这是一个关于对话框")

完整代码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


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


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(475, 95)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 30, 71, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(110, 30, 71, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(200, 30, 71, 28))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(290, 30, 71, 28))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(380, 30, 71, 28))
        self.pushButton_5.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        # 为按钮控件的clicked信号绑定自定义槽函数
        # 关联“消息框”按钮的方法
        self.pushButton.clicked.connect(self.info)
        # 关联“警告框”按钮的方法
        self.pushButton_2.clicked.connect(self.warn)
        # 关联“问答框”按钮的方法
        self.pushButton_3.clicked.connect(self.question)
        # 关联“错误框”按钮的方法
        self.pushButton_4.clicked.connect(self.critical)
        # 关联“关于框”按钮的方法
        self.pushButton_5.clicked.connect(self.about)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "消息框"))
        self.pushButton_2.setText(_translate("MainWindow", "警告框"))
        self.pushButton_3.setText(_translate("MainWindow", "问答框"))
        self.pushButton_4.setText(_translate("MainWindow", "错误框"))
        self.pushButton_5.setText(_translate("MainWindow", "关于框"))

    # 自定义槽函数
    def info(self):    # 显示消息对话框
        QMessageBox.information(None, "消息", "这是一个消息对话框", QMessageBox.Ok)

    def warn(self):    # 显示警告对话框
        QMessageBox.warning(None, "警告", "这是一个警告对话框", QMessageBox.Ok)

    def question(self):   # 显示问答对话框
        QMessageBox.question(None, "问答", "这是一个问答对话框", QMessageBox.Ok)

    def critical(self):    # 显示错误对话框
        QMessageBox.critical
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值