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

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)”)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD...,无法按下任何按键

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD…,无法按下任何按键 在显示这个界面之后点击启动,之后立刻狂按F2, 然后就能进去了

​代码混淆的原理是什么?常见代码混淆方法介绍

本文主要想你介绍代码混淆的原理,常见代码混淆方法,欢迎查阅~ 移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者…

淘宝扭蛋机小程序:扭转购物新风尚,开启惊喜连连之旅

随着移动互联网的飞速发展,淘宝作为国内领先的电商平台,始终致力于为用户带来更加新颖、有趣的购物体验。如今,我们隆重推出淘宝扭蛋机小程序,将传统扭蛋机的乐趣与电商购物的便捷完美结合,为用户带来前所未有的惊喜与…

PyTorch构建自然语言处理模型

一、整体流程 二、 详细步骤 1. 准备数据 在构建自然语言处理模型之前,首先需要准备数据。可以使用PyTorch提供的Dataset和DataLoader类来加载和处理数据。 # 导入必要的库 import torch from torch.utils.data import Dataset, DataLoader # 定义自定义Dataset类…

Linux进程控制篇

1. 进程创建 fork()函数创建一个进程: 父进程返回子进程的pid子进程返回0 创建进程后,我们希望子进程做的事有两种: 子进程帮父进程完成同样的工作子进程干其他任务 进程 内核的相关管理数据结构(tack_struct mm_struct 页表) 代码和数据…

python零基础入门笔记【源源老师】

1. print() 输出 (1)认识英文单词 print: 输出(2)print() 的作用 print():用于在控制台上输出你想要的内容。 (3)代码演示 举例1: 【注意:】用双引号包裹的&#xff0…

OpenHarmony开发实例:【新闻客户端】

介绍 本篇Codelab我们将教会大家如何构建一个简易的OpenHarmony新闻客户端(JS版本)。应用包含两级页面,分别是主页面和详情页面,两个页面都展示了丰富的UI组件,其中详情页的实现逻辑中还展示了如何通过调用相应接口&a…

交友盲盒1.4.5

本文来自:微擎交友盲盒1.4.5 - 源码1688 应用介绍 品牌其他语言PHP数据库Mysql移动端Wap自适应公众服务号大小80 MB规格整站源码授权免授权源文件完全开源(含全部源文件)伪静态需要操作系统Windows,Linux安装方式QQ远程协助web服…

客户资料不翼而飞?企业数据保护攻略

在数字化经济时代,企业的客户资料等同于商业生命线,一旦泄露,后果不堪设想。例如,2017年Equifax的数据泄露事件,造成超过1.4亿用户的个人信息外泄,不仅给用户带来风险,也让公司名誉受损&#xf…

IDC发布2023年中国整体超融合市场报告,深信服第一

4月15日,IDC发布了《中国软件定义存储 (SDS)及超融合存储系统 (HCI)市场季度跟踪报告,2023年第四季度》。 报告显示,中国超融合市场在2023年较去年同期实现2.9%增长,其中HCI 验证系统市场占有率较去年同期上升近4%,接近…

Day01-环境准备与镜像案例

Day01-环境准备与镜像案例 1. 容器架构1.1 Iaas Paas Saas (了解)1.2 什么是容器1.3 容器vs虚拟机1.4 Docker极速上手指南1)配置docker源(用于安装docker)2)docker下载镜像加速的配置3)自动补全 1.5 Docker C/S架构1.6 Docker的镜像管理1&…

MySQL基础-----约束详解

目录 一. 概述: 二.约束演示: 三.外键约束: 3.1介绍: 3.2外键约束语法: 3.3删除,更新行为: 一. 概述: 🧐🧐概念:约束是作用于表中字段上的规则,用于限制…

真正的跨数据库

jrt不同于主流Springmybats框架宣传的多数据支持。引入mybats之后多数据库支持基本就是无稽之谈,一堆Mapper写SQL语句,多数据库支持从最开始就变成只能连多种数据库,而不是业务程序可以跑在多种数据库上面不用改动。一个框架如果不能解决常规…

盘点入驻天府锋巢直播产业基地,能够享受哪些政策优惠?

直播产业谱写了互联网时代下最新的狂想曲,在短短几年时间,各数资本、品牌、MCN、主播不断涌入其中。根据招商证券预测,直播产业将是一个万亿级市场,在宏大的趋势面前,没有人能视而不见,直播电商的未来已来。…

算法题解记录13+++杨辉三角(百日筑基)

本题是动态规划的问题,我也在此阐述我对动态规划的理解,如有不准确、缺失、错误,敬请斧正。 题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和…

Elasticsearch的使用教程

Elasticsearch简介 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行…

Pytorch-张量形状操作

😆😆😆感谢大家的观看😆😆 🌹 reshape 函数 transpose 和 permute 函数 view 和 contigous 函数 squeeze 和 unsqueeze 函数 在搭建网络模型时,掌握对张量形状的操作是非常重要的&#xff…

智慧电网数据可视化运维云平台解决方案

智慧电力概述 智慧电力是通过采用先进的大数据、云计算、物联网、边缘计算等技术,实现生产信息与管理信息的智慧,实现人、技术、经营目标和管理方法的集成,是企业管理思想的一个新突破。智慧电厂建设具备智能化、一体化、可观测、可互动、自…

实验一:配置IP地址

1.实验环境 主机A和主机B通过一根网线相连 2.需求描述 为两台主机配置IP地址,验证IP地址是否生效,验证 同一网段的两台主机可以互通,不同网段的主机不能 直接互通 3.推荐步骤 1. 为两台主机配置P地址,主机A为10.0.10.10&#…

python 头文件怎么写

本文主要以python2为例。首先介绍一下Python头文件的编程风格,然后再给大家详细介绍import部分的基本用法。这两个部分就是Python中头文件的组成模块。 编程风格 #!/usr/bin/env python #在文件头部 ( 第一行 ) 加上 设置 Python 解释器 # -*- coding: utf…