PyQt介绍——弹框介绍和使用

news2024/11/28 12:52:08

PyQt介绍——弹框介绍和使用

一、QMessageBox

QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈

QMessageBox类提供了许多常用的弹出式对话框,如提示、警告、错误、询问、关于等对话框。这些不同类型的QMessageBox对话框只是显示时的图标不同,其他功能是一样的。

QMessageBox有四种类型:information、question、warning和critical。

  • information类型
    information类型的QMessageBox显示一个信息框,它通常用来提醒用户一些详细但不关键的信息。我们可以在标题和内容之间添加一个图标或在右上角添加一个帮助按钮。代码如下:

  • question类型
    question类型的QMessageBox通常用来显示一些需要用户回答“是”或“否”的问题。它可以有默认按钮和一些可选按钮,例如‘Yes’、‘No’、‘Cancel’和‘Help’等。如果你嵌入到应用程序的窗口中,它还可以显示一个缩小、关闭和拓展按钮,代码如下:

  • warning类型
    warning类型的QMessageBox通常用来警告用户可能会影响程序使用的一些操作或过程。例如,它在一些需要警告的代码中经常被使用。代码如下:

  • critical类型
    critical类型的QMessageBox在某些错误情况下被使用,例如程序崩溃、网络断开等。它是一种需要注意并进行处理的警告类型。代码如下:

from PyQt5.QtWidgets import *
import sys


class TestWidget(QWidget):

    def __init__(self):
        super(TestWidget, self).__init__()
        self.resize(400, 200)
        self.setWindowTitle("弹窗测试")
        self.main_layout = QVBoxLayout()
        self.main_layout.setContentsMargins(10, 10, 10, 10)
        self.setLayout(self.main_layout)

        self.button1 = QPushButton('消息对话框', self)
        self.button2 = QPushButton('提问对话框', self)
        self.button3 = QPushButton('警告对话框', self)
        self.button4 = QPushButton('严重错误对话框', self)
        self.button5 = QPushButton('关于对话框', self)

        self.main_layout.addWidget(self.button1)
        self.main_layout.addWidget(self.button2)
        self.main_layout.addWidget(self.button3)
        self.main_layout.addWidget(self.button4)
        self.main_layout.addWidget(self.button5)

        self.button1.clicked.connect(self.show_info_dialog)
        self.button2.clicked.connect(self.show_question_dialog)
        self.button3.clicked.connect(self.show_warning_dialog)
        self.button4.clicked.connect(self.show_critical_dialog)
        self.button5.clicked.connect(self.show_about_dialog)

    def show_info_dialog(self):
        QMessageBox.information(self, '提示信息', 'hello,提示你一下')  # 可以不带选择按键,也可以带ok按键
        # QMessageBox.information(self, '提示信息', 'hello,提示你一下',  QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

    def show_question_dialog(self):
        reply = QMessageBox.question(self, '有个问题', '你确定要这么干吗?',  QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            print("ok")
        else:
            print("no no no!")

    def show_warning_dialog(self):
        QMessageBox.warning(self, '此处有告警', '有告警发生',  QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

    def show_critical_dialog(self):
        # 弹出信息对话框
        QMessageBox.critical(self, '慎重', '发生严重错误',  QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

    def show_about_dialog(self):
        # 弹出信息对话框
        QMessageBox.about(self, '不知道', '关于对话')


app = QApplication(sys.argv)
window = TestWidget()
window.show()
sys.exit(app.exec_())

二、QInputDialog

QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(OK 按钮和Cancel 按钮)组成。
在这里插入图片描述

  • 输入文本
value, ok = QInputDialog.getText(self, "输入框标题", "这是提示信息\n\n请输入文本:", QLineEdit.Normal, "这是默认值")  # 第三个参数表示显示类型,可选,有正常(QLineEdit.Normal)、密碼( QLineEdit. Password)、不显示( QLineEdit. NoEcho)三种情况
  • 输入多行文本
 value, ok = QInputDialog.getMultiLineText(self, "输入框标题", "输入您的地址:", "默认的\n地址是\n中国北京东城区")
  • 输入整数
value, ok = QInputDialog.getInt(self, "整数弹窗", "输入整数\n\n请输入整数:", 22, -10000, 10000, 2)  # 后面四个数字的作用依次是 初始值 最小值 最大值 步幅
  • 输入小数
value, ok = QInputDialog.getDouble(self, "数字弹窗", "请选择一个整数\n\n请输入整数:", 37.56, -10000, 10000, 2)  # 后面四个数字的作用依次是 初始值 最小值 最大值 小数点后位数
  • 输入选项
items = ["Spring", "Summer", "Fall", "Winter"]
value, ok = QInputDialog.getItem(self, "季节选择弹窗", "请选择一个季节\n\n请选择季节:", items, 1, True)  # 1为默认选中选项目,True/False 列表框是否可编辑。

例子:

import sys
from PyQt5.QtWidgets import *


class InputdialogWidget(QWidget):
    def __init__(self, parent=None):
        super(InputdialogWidget, self).__init__(parent)
        layout = QFormLayout()
        self.btn1 = QPushButton("获得季节")
        self.btn1.clicked.connect(self.getItem)
        self.le1 = QLineEdit()
        layout.addRow(self.btn1, self.le1)

        self.btn2 = QPushButton("获得名字")
        self.btn2.clicked.connect(self.getIext)
        self.le2 = QLineEdit()
        layout.addRow(self.btn2, self.le2)

        self.btn3 = QPushButton("获得整数")
        self.btn3.clicked.connect(self.getInt)
        self.le3 = QLineEdit()
        layout.addRow(self.btn3, self.le3)
        self.setLayout(layout)
        self.setWindowTitle("Input Dialog 例子")

    def getItem(self):
        items = ["Spring", "Summer", "Fall", "Winter"]
        item, ok = QInputDialog.getItem(self, "选择一个季节",
                                        "季节列表\n\n请选择季节:", items, 1, False)
        if ok and item:
            self.le1.setText(item)

    def getIext(self):
        text, ok = QInputDialog.getText(self, '输入姓名的弹窗', '输入姓名:')
        if ok:
            self.le2.setText(str(text))

    def getInt(self):
        num, ok = QInputDialog.getInt(self, "输入数字弹窗", "输入数字", 22, -10000, 10000, 2)
        if ok:
            self.le3.setText(str(num))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = InputdialogWidget()
    demo.show()
    sys.exit(app.exec_())

三、QFileDialog

  1. 文件夹
    dir_ = QFileDialog.getExistingDirectory(self, “选取文件夹”, “C:/”) # 起始路径

  2. 单文件
    设置文件扩展名过滤,注意用双分号间隔
    file_, filetype = QFileDialog.getOpenFileName(self, “选取文件”, “C:/”, “All Files ();;Text Files (.txt)”)

  3. 多文件
    files, ok = QFileDialog.getOpenFileNames(self, “多文件选择”, “C:/”, “All Files ();;Text Files (.txt)”)

  4. 保存
    file_, ok = QFileDialog.getSaveFileName(self, “文件保存”, “C:/”, “All Files ();;Text Files (.txt)”)

  5. 另存为
    file_, ok = QFileDialog.getSaveFileName(self, “文件另存为”, “C:/”, “All Files ();;Text Files (.txt)”)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考证书有用吗?软考证书的含金量大吗?

一、以考代评 通过考试并获得相应级别计算机专业技术资格(水平)证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据《工程技术人员职务试行条例》有关规定和工作需要,从获得计算机专业技术资格…

诺奖得主与巨资“铸剑”:两年内,Pasqal冲刺量子计算的商业化大关

PASQAL的量子计算机 几年前,中性原子技术似乎是最不可能取得突破的领域。因为它们没有电荷,这使得控制它们显得尤为困难。然而,随着哈佛大学和麻省理工学院的最新研究进展,以及像QuEra这样的私营初创公司的努力,中性原…

修改百度百科的词条的方法

百度百科作为国内最大的百科全书网站之一,是广大网民获取各类知识的重要途径之一。所以,如何修改百度百科的词条成为了很多人关心的话题。本文将介绍修改百度百科的方法,并提供一些技巧和注意事项。 注册百度账号 首先,进入百度百…

2024/4/6—力扣—简化路径

代码实现&#xff1a; // 分割/得到名字 char **split(const char *s, int *returnSize) {int n strlen(s);char **ans (char **)malloc(sizeof(char *) * n);int l 0, r 0, len 0;while (r < n) {while (r < n && s[r] /) {r;}l r;while (r < n &…

Flask前端页面文本框展示后端变量,路由函数内外两类

一、外&#xff01;路由函数外的前后端数据传输 Flask后端 ↓ 首先导入包&#xff0c;需要使用 后端&#xff1a;flask_socketio来进行路由外的数据传输&#xff0c; from flask_socketio import SocketIO, emit 前端&#xff1a;还有HTML头文件的设置。 <!DOCTYPE …

面试突击---MySQL索引

面试突击---MYSQL索引 面试表达技巧&#xff1a;1、谈一下你对于mysql索引的理解&#xff1f;&#xff08;为什么mysql要选择B树来存储索引&#xff09;2、索引有哪些分类&#xff1f;3、聚簇索引与非聚簇索引4、回表、索引覆盖、最左匹配原则、索引下推&#xff08;1&#xff…

实验案例二:配置路由器实现互通

一.实验环境 实验用具包括两台路由器&#xff08;或交换机)&#xff0e;一根双绞线缆&#xff0c;一台PC&#xff0c;一条Console线缆。 二.需求描述 如图6.14所示&#xff0c;将两台路由器的Gig0/0接口相连&#xff0c;通过一台PC连接设备的Console端口并配置IP地址&#x…

跟风Spring的context继承风格写的一个业务处理器,无聊

忽然记起spring的context的N重继承风格&#xff0c;一个抽象类实现一部份功能&#xff0c;想从那重改复写就从哪重开始。脑子一抽&#xff0c;也在业务代码里面玩了下。效果嘛。学得是有模有样&#xff0c;感觉就是越搞越复杂。有点过度设计了&#xff0c;折腾个啥呢。哈哈哈……

防止企业数据泄密的四种有效措施

防止企业数据泄密的四种有效措施 泄密大案每天都在上演&#xff0c;受害者既有几十人的小型企业&#xff0c;也有上万人的世界500强&#xff0c;为什么这些企业都难逃数据泄露的噩梦呢&#xff1f;我们应该采取什么措施来防止信息泄密呢&#xff1f; 首先我们来看看数据泄密的…

聚贤帮赵远峰:照亮希望 激励奋斗

在2023年河北涿州灾情爆发后,聚贤帮的一众学员深入困难群众中去,力所能及贡献自己的一份力量。其实早在2022年4月,聚贤帮的许多成员就曾多次踏入山区,开展慈善活动,用自己的力量为当地居民带来温暖和关爱。 “照亮希望,激励奋斗”成为了大家慈善活动的信仰。通过捐款和物资,聚…

swiper 插件 轮播图

html代码 <div class"text_box"><div class"swiper mySwiper"><div class"swiper-wrapper"><div class"swiper-slide"><imgsrc"https://cdn.pixabay.com/photo/2023/11/08/09/58/leaf-8374442_640.jp…

Linux --- 高级IO

目录 1. 什么是IO 2. 阻塞的本质 3. 五种IO模型 3.1. 通过故事认识五种IO模型 3.2. 上述故事的总结 3.3. 具体的五种IO模型 3.3.1. 阻塞IO 3.3.2. 非阻塞轮询式IO 3.3.3. 信号驱动IO 3.3.4. 多路转接IO 3.3.5. 异步IO 4. 非阻塞IO 4.1. fcntl 系统调用 1. 什么是I…

怎么清除3D模型杂质?---模大狮模型网

在进行3D建模过程中&#xff0c;模型可能会受到各种杂质的影响&#xff0c;这些杂质可能来自于模型本身的结构问题、导入导出过程中的错误、或者是不当的编辑操作所留下的痕迹。清除这些杂质是保证模型质量和渲染效果的关键步骤之一。本文将介绍几种常见的清除3D模型杂质的方法…

【Android】重温Activity生命周期

前言 Android中用得最多的组件是Activity&#xff0c;而它的生命周期也是最基础的知识&#xff0c;从刚接触Android到工作中会频繁依赖这部分知识。可能大多数人能说出页面新建到页面关闭会走的生命周期&#xff1a;onCreate、onStart、onResume、onPause、onStop、onDestory&…

计算机网络 Cisco路由器基本配置

一、实验内容 1、按照下表配置好PC机IP地址和路由器端口IP地址 2、配置好路由器特权密文密码“abcd&#xff0b;两位班内序号”和远程登录密码“star” 3、验证测试 a.验证各个接口的IP地址是否正确配置和开启 b.PC1 和 PC2 互ping c.验证PC1通过远程登陆到路由器上&#…

VMware安装Linux虚拟机(rocky9)

软件准备&#xff1a; VMware虚拟机ISO系统镜像文件 选择创建虚拟机→典型→下一步→点击稍后安装操作系统 选择Linux系统和对应版本 输入虚拟机名称和选择保存位置 设置磁盘大小 根据需要自定义硬件配置→完成 然后点击编辑虚拟机设置→CD/DVD→选择ISO镜像 然后开启虚拟机→…

Mysql的函数和约束

函数和约束 文章目录 函数和约束函数字符串函数数值函数日期函数流程函数 约束概念目的分类使用案例外键约束 函数 使用 select 函数();字符串函数 数值函数 日期函数 流程函数 约束 概念 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的 保证…

Windows VS2019 JsonCpp库下载编译

下载地址 jsoncpp下载地址 编译 打开cmake-gui 设置代码地址&#xff0c;生成地址->点击configure->设置VS2019-x64 如下&#xff1a; 再点击generate 进入到build的目录打开jsoncpp.sln文件&#xff0c;进行编译即可 生成目录&#xff1a; build\lib\Release 头…

零基础自学Python,啃透这五本书就够了!

选择合适的学习资源 在自学Python的前期&#xff0c;选择一本适合初学者的Python入门书籍或在线教程&#xff0c;从基础开始学习&#xff0c;好的入门书籍或在线教程会按照逻辑顺序组织知识&#xff0c;从基础概念开始&#xff0c;逐步引导你深入学习Python编程语言。这种系统…