PyQt5 对话框架知识 深度总结

一、普通对话框

(一)简介

        QDialog是对话框窗口的基类对话框,主要用来执行短期任务或者与用户进行互动,它可以是模态的,也可以是非模态的。对话框没有菜单栏、工具栏、状态栏。模态指的是窗口打开的时候,它底下的父窗口是不可操作的;非模态就是当我们打开一个子窗口的时候,其下面的窗口也是可以操作的。对话框可以衍生为颜色选择对话框(QColorDialog)、字体对话框(DFontDialog)、文件选择对话框(DFileDialog)、输入对话框(DInputDialog)、消息确认框(QMessageBox)、进度条对话框(QProgressDialog)等等。继承关系如下:

        

         对于主窗口的选择如果包含状态栏、工具栏、菜单栏等可以使用QMainWindow。如果只是对话框形式不包含以上几种就可以使用QDialog。如果不确定或者说他会作为顶层窗口(没有父窗口的窗口就是顶层窗口)或者嵌入到其他窗口中,那么就可以使用最根本的基类QWidget类。

        QWidget控件和窗口的父类 ,自由度高(什么都东西都没有),没有划分菜单、工具栏、状态栏、主窗口 等区域

        QMainWindow是QWidget的子类,包含菜单栏,工具栏,状态栏,标题栏等,中间部分则为主窗口区域。

二、消息对话框(称为弹窗更妥)

        QMessageBox提供两套接口来实现,一种是static functions(静态方法调用),另外一种 the property-base API(基于属性的API)。直接调用静态方法是一种比较简单的途径,但是没有基于属性API的方式灵活。在QT的官网上推荐使用the property-base API。

(一)API

1.创建消息对话框

        创建消息对话框共两个基本步骤,其余均为中间操作:

# 1.创建消息对话框
messageBox=QMessageBox()
# 2.执行提示框并等待用户操作。
messageBox.exec_()

2.方法和属性

(1)设置标题

messageBox.setWindowTitle()

(2)设置提示框的文本内容。

messageBox.setText()

(3)设置标准按钮

messageBox.setStandardButtons(QMessageBox.Yes|QMessageBox.No)
# 多个标准按钮之间用"|"拼接
        '''
        参数值及其含义:
        QMessageBox.Ok                      # 使用AcceptRole定义的“确定”按钮。
        QMessageBox.Open                    # 使用AcceptRole定义的“打开”按钮。
        QMessageBox.Save                    # 使用AcceptRole定义的“保存”按钮。
        QMessageBox.Cancel                  # 使用RejectRole定义的“取消”按钮。
        QMessageBox.Close                   # 使用RejectRole定义的“关闭”按钮。
        QMessageBox.Discard                 #  “丢弃”或“不保存”按钮,具体取决于使用DestructiveRole定义的平台。
        QMessageBox.Apply                   # 使用ApplyRole定义的“应用”按钮。
        QMessageBox.Reset                   # 使用ResetRole定义的“重置”按钮。
        QMessageBox.RestoreDefaults         # 使用ResetRole定义的“恢复默认值”按钮。
        QMessageBox.Help                    # 使用HelpRole定义的“帮助”按钮。
        QMessageBox.SaveAll                 # 使用AcceptRole定义的“全部保存”按钮。
        QMessageBox.Yes                     # 使用YesRole定义的“是”按钮。
        QMessageBox.YesToAll                # 使用YesRole定义的“Yes to All”按钮。
        QMessageBox.No                      # 使用NoRole定义的“否”按钮。
        QMessageBox.NoToAll                 # 使用NoRole定义的“No to All”按钮。
        QMessageBox.Abort                   # 使用RejectRole定义的“Abort”按钮。
        QMessageBox.Retry                   # 使用AcceptRole定义的“重试”按钮。
        QMessageBox.Ignore                  # 使用AcceptRole定义的“忽略”按钮。
        QMessageBox.NoButton                # 无效按钮。
        '''

(4)获取标准按钮

standardButton()

(5)获取某个按钮

参数值的同方法(3)

messageBox.button()

(6)获取所有按钮,返回一列表,元素全部为按钮对象

messageBox.buttons()

(7)设置图标

messageBox.setIcon()
        '''
        参数值的含义:
        内置图标        
            QMessageBox.Noicon                  # 消息框没有任何图标
            QMessageBox.Question                # 一个图标,表示该消息正在提问
            QMessageBox.Information             # 一个图标,表示该消息没有任何异常
            QMessageBox.Warning                 # 一个图标,表示改消息是一个警告
            QMessageBox.Critical                # 一个图标,表示该消息代表一个严重问题、
        自定义图标
            setIconPixmap(QPixmap)            
        '''

(8)设置自定义图标

messageBox.setIconPixmap()
示例代码:
pixMap=QPixmap('狼.jpeg')
pixMap=pixMap.scaled(100,80,Qt.IgnoreAspectRatio)
messageBox.setIconPixmap(pixMap)

(9)获取自定义图标对象

messageBox.iconPixmap()

(10)设置提示文本和获取提示文本

messageBox.setInformativeText(str)                     # 设置提示文本,接受富文本
messageBox.informativeText()-> str                    # 获取提示文本内容

(11)置详细文本和获取详细文本

messageBox.setDetailedText(self, str)                  # 设置详细文本,不接受富文本
messageBox.detailedText()->str                         # 获取详细文本内容

(12)设置复选框和获取复选框

messageBox.setCheckBox(self, QCheckBox)                # 设置复选框
messageBox.checkBox(self)->QCheckBox                   # 获取复选框,返回QCheckBox对象

(13)执行提示框并等待用户操作

        返回值是一组数字,表示某个按钮,由此可见按钮的名称同样可以用数字设置,有空时可以研究一下。

messageBox.exec_()

3.信号

buttonClicked(QAbstractButton button)                                           # 按钮被点击时发射该信号,传递被点击的按钮对象

 4.代码

(1)练习代码

结合学习资料自己编写的代码。

import sys, os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
'''
学习资料来源:https://blog.csd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值