Pyside6 QMessageBox

news2024/11/9 3:54:18

Pyside6 QMessageBox

  • QMessageBox使用
    • 5种基本消息
    • 自定义消息框
    • QMessageBox标准按钮
    • 程序
      • 界面程序
      • 主程序

QMessageBox是一种通用的弹出式对话框,用于显示提示消息,允许用户点击不同的消息框按钮做出不同的判断。Pyside6提供了QMessageBox的操作函数,关于QMessageBox的资料可以参考下面的文档

https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QMessageBox.html#qmessagebox

QMessageBox使用

5种基本消息

Pyside6的QMessageBox提供了5种用户常用的消息,分别是about(关于)、critical(严重错误)、information(消息)、question(问答)、warning(警告)。

函数作用
about输出关于消息框
critical输出严重错误消息框
information输出消息消息框
question输出问答消息框
warning输出警告消息框
def about_msg(self):
    QMessageBox.about(self, "关于消息框", "关于消息")

def critical_msg(self):
    ret = QMessageBox.critical(self, "严重错误消息框", "这是一个严重错误",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
    if ret == QMessageBox.StandardButton.Ok:
        print("选择了OK")
    else:
        print("选择了NO")

def information_msg(self):
    ret = QMessageBox.information(self, "消息框", "这是一个消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
    if ret == QMessageBox.StandardButton.Ok:
        print("选择了OK")
    else:
        print("选择了NO")

def question_msg(self):
    ret = QMessageBox.question(self, "问答框", "这是一个问答消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
    if ret == QMessageBox.StandardButton.Ok:
        print("选择了OK")
    else:
        print("选择了NO")

def warning_msg(self):
    ret = QMessageBox.warning(self, "警告框", "这是一个警告消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
    if ret == QMessageBox.StandardButton.Ok:
        print("选择了OK")
    else:
        print("选择了NO")

在这里插入图片描述

自定义消息框

除了上面5种基本消息框之外,我们还可以自己定义消息框

函数作用
setText设置消息框文本
setInformativeText设置消息框内容
setStandardButtons设置消息框标准按钮
setDefaultButton设置消息框默认按钮,也就是默认选择的按钮
msgBox = QMessageBox()
msgBox.setText("文本内容已经改变.") # 设置消息框文本
msgBox.setInformativeText("是否需要保存?") # 设置消息框内容
msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) # 设置消息框标准按钮
msgBox.setDefaultButton(QMessageBox.Save) # 设置消息框默认按钮
ret = msgBox.exec() # 等待消息框退出
if ret == QMessageBox.Save:
    # Save was clicked
    print("选择了保存")
elif ret == QMessageBox.Discard:
    # Don't Save was clicked
    print("选择了放弃")
elif ret == QMessageBox.Cancel:
    # Cancel was clicked
    print("选择了取消")
else:
    # should never be reached
    print("没有选择")

在这里插入图片描述

QMessageBox标准按钮

QMessageBox定义了标准按钮,每个按钮都有一个特定的值,当用户设置了标准按钮之后,就可以通过消息框的返回值判断用户选择了哪个按钮,做出不同的响应。

ButtonMask               : QMessageBox.StandardButton = ... # -0x301
NoButton                 : QMessageBox.StandardButton = ... # 0x0
Default                  : QMessageBox.StandardButton = ... # 0x100
Escape                   : QMessageBox.StandardButton = ... # 0x200
FlagMask                 : QMessageBox.StandardButton = ... # 0x300
FirstButton              : QMessageBox.StandardButton = ... # 0x400
Ok                       : QMessageBox.StandardButton = ... # 0x400
Save                     : QMessageBox.StandardButton = ... # 0x800
SaveAll                  : QMessageBox.StandardButton = ... # 0x1000
Open                     : QMessageBox.StandardButton = ... # 0x2000
Yes                      : QMessageBox.StandardButton = ... # 0x4000
YesAll                   : QMessageBox.StandardButton = ... # 0x8000
YesToAll                 : QMessageBox.StandardButton = ... # 0x8000
No                       : QMessageBox.StandardButton = ... # 0x10000
NoAll                    : QMessageBox.StandardButton = ... # 0x20000
NoToAll                  : QMessageBox.StandardButton = ... # 0x20000
Abort                    : QMessageBox.StandardButton = ... # 0x40000
Retry                    : QMessageBox.StandardButton = ... # 0x80000
Ignore                   : QMessageBox.StandardButton = ... # 0x100000
Close                    : QMessageBox.StandardButton = ... # 0x200000
Cancel                   : QMessageBox.StandardButton = ... # 0x400000
Discard                  : QMessageBox.StandardButton = ... # 0x800000
Help                     : QMessageBox.StandardButton = ... # 0x1000000
Apply                    : QMessageBox.StandardButton = ... # 0x2000000
Reset                    : QMessageBox.StandardButton = ... # 0x4000000
LastButton               : QMessageBox.StandardButton = ... # 0x8000000
RestoreDefaults          : QMessageBox.StandardButton = ... # 0x8000000

程序

界面程序

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>247</width>
    <height>252</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QPushButton" name="about_msg_btn">
        <property name="text">
         <string>关于消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QPushButton" name="critical_msg_btn">
        <property name="text">
         <string>严重错误消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_3">
      <item>
       <widget class="QPushButton" name="information_msg_btn">
        <property name="text">
         <string>消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_4">
      <item>
       <widget class="QPushButton" name="question_msg_btn">
        <property name="text">
         <string>问答消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_5">
      <item>
       <widget class="QPushButton" name="warning_msg_btn">
        <property name="text">
         <string>警告消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_6">
      <item>
       <widget class="QPushButton" name="pushButton">
        <property name="text">
         <string>自定义消息框</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>247</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

主程序

# Import Qt libraries
from PySide6.QtWidgets import *
from PySide6.QtCore import QFile
# Import UI developed in Qt Creator
from messagebox_ui import Ui_MainWindow  # 导入界面
# Import PseudoSensor
# Import system tools and datetime
import sys
import statistics
import time
from datetime import datetime

# Create and start the Qt application
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        
        # 设置界面为用户设计的界面
        self.ui = Ui_MainWindow() 
        self.ui.setupUi(self) 

        self.ui.about_msg_btn.clicked.connect(self.about_msg)
        self.ui.critical_msg_btn.clicked.connect(self.critical_msg)
        self.ui.information_msg_btn.clicked.connect(self.information_msg)
        self.ui.question_msg_btn.clicked.connect(self.question_msg)
        self.ui.warning_msg_btn.clicked.connect(self.warning_msg)
        self.ui.pushButton.clicked.connect(self.custom_msg)


    def custom_msg(self):
        msgBox = QMessageBox()
        msgBox.setText("文本内容已经改变.") # 设置消息框文本
        msgBox.setInformativeText("是否需要保存?") # 设置消息框内容
        msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) # 设置消息框标准按钮
        msgBox.setDefaultButton(QMessageBox.Save) # 设置消息框默认按钮
        ret = msgBox.exec() # 等待消息框退出
        if ret == QMessageBox.Save:
            # Save was clicked
            print("选择了保存")
        elif ret == QMessageBox.Discard:
            # Don't Save was clicked
            print("选择了放弃")
        elif ret == QMessageBox.Cancel:
            # Cancel was clicked
            print("选择了取消")
        else:
            # should never be reached
            print("没有选择")


    def about_msg(self):
        QMessageBox.about(self, "关于消息框", "关于消息")

    def critical_msg(self):
        ret = QMessageBox.critical(self, "严重错误消息框", "这是一个严重错误",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
        if ret == QMessageBox.StandardButton.Ok:
            print("选择了OK")
        else:
            print("选择了NO")

    def information_msg(self):
        ret = QMessageBox.information(self, "消息框", "这是一个消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
        if ret == QMessageBox.StandardButton.Ok:
            print("选择了OK")
        else:
            print("选择了NO")

    def question_msg(self):
        ret = QMessageBox.question(self, "问答框", "这是一个问答消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
        if ret == QMessageBox.StandardButton.Ok:
            print("选择了OK")
        else:
            print("选择了NO")

    def warning_msg(self):
        ret = QMessageBox.warning(self, "警告框", "这是一个警告消息",QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.No)
        if ret == QMessageBox.StandardButton.Ok:
            print("选择了OK")
        else:
            print("选择了NO")

    def closeAndExit(self):
        sys.exit()

if __name__ == "__main__":
    app = QApplication(sys.argv) # 初始化QApplication

    # 初始化界面并显示界面
    window = MainWindow() 
    window.show() 
    window.setFixedSize(window.width(), window.height())
    sys.exit(app.exec())

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

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

相关文章

如何把Elasticsearch中的数据导出为CSV格式的文件

前言| 本文结合用户实际需求用按照数据量从小到大的提供三种方式从ES中将数据导出成CSV形式。本文将重点介Kibana/Elasticsearch高效导出的插件、工具集&#xff0c;通过本文你可以了解如下信息&#xff1a; 1&#xff0c;从kibana导出数据到csv文件 2&#xff0c;logstash导…

【EI会议征稿】第七届智能制造与自动化国际学术会议(IMA 2024)

第七届智能制造与自动化国际学术会议&#xff08;IMA 2024&#xff09; 2024 7th International Conference on Intelligent Manufacturing and Automation 第七届智能制造与自动化国际学术会议&#xff08;IMA 2024&#xff09;定于2024年1月12-14日在长沙隆重举行。会议主要…

自动注入@RequiredArgsConstructor

Autowired有波浪线&#xff0c;显示推荐使用构造器注入的方式。 但是以后需要自动注入的对象很多&#xff0c;写这么多构造函数代码会很长&#xff0c;可以在类上面加lombok中的RequiredArgsConstructor&#xff0c;表示必备参数的构造函数&#xff0c;给加final的成员变量生成…

使用Docker快速搭建Redis主从复制

目录 一、前言二、拉取Redis镜像三、创建挂载目录和添加配置文件3.1、主节点(6379)3.2、从节点(6380)3.3、从节点(6381) 四、启动Redis容器4.1、主节点(6379)4.2、从节点(6380)4.3、从节点(6381)4.4、启动命令参数介绍 五、查看各节点主从信息5.1、主节点(6379)5.2、从节点(638…

淘宝API访问入口未授权怎么解决?

没有授权应该是读取数据失败或是网络传输不稳定。 API的主要功能是提供应用程序与开发人员以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口&#xff0c;故而是一种抽象。 …

火山引擎实时、低延时拥塞控制算法的优化实践

摘要 火山引擎智能拥塞控制算法 VICC&#xff08;Volcano Intelligent Congestion Control&#xff09;是一种自适应的拥塞控制算法&#xff0c;旨在解决全球不同网络环境下&#xff0c;不同音视频应用对带宽利用率和延时的差异化要求。它结合了传统拥塞控制算法&#xff08;如…

YCSB and TPC-C on MySQL(避免重复load)

一、编译安装MySQL 下载mysql5.7.28源码 https://downloads.mysql.com/archives/community/ Select Operating System 选择 Source Code Select OS version 选择 All Operating Systems 选择带有boost的版本 安装系统包 apt -y install make cmake gcc g perl bison libai…

网站批量替换关键词方法

注意替换操作之前先对文件做好备份 1.下载http://downinfo.myhostadmin.net/ultrareplace5.02.rar 解压出来,运行UltraReplace.exe 2.点击菜单栏中的配置&#xff0c;全选所有文件类型,或者根据自己的需求选择部分,如htm、html、php、asp等 3.若替换单个文件,点击文件,若是要…

月薪15-25k,急招Web安全研究员

更多岗位招聘信息 请wx搜索【知了内推】小程序

CentOS 系统安装和使用Docker服务

系统环境 使用下面的命令&#xff0c;可以查看CentOS系统的版本。 lsb_release -a结果&#xff1a; 说明我的系统是7.9.2009版本的 安装Docker服务 依次执行下面的指令&#xff1a; yum install -y yum-utilsyum install -y docker即可安装docker服务 如果这样安装不成功…

python+selenium的web自动化上传操作的实现

一、关于上传操作 上传有两种情况&#xff1a; 如果是input可以直接输入路径的&#xff0c;那么直接使用send_keys(文件路径)输入路径即可&#xff1b; 非input标签的上传&#xff0c;则需要借助第三方工具&#xff1a;第三方库 pywin32、第三方工具pyautogui等等。 那这里…

Android问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

第二证券:建仓的几种方式?

建仓是出资者在证券商场中最根本的出资行为之一。简单来说&#xff0c;就是买入股票或基金&#xff0c;以期取得股价上涨所带来的收益。建仓是证券出资的第一步&#xff0c;也是最重要的一步。在选择建仓方法之前&#xff0c;了解常见的几种方法是很有必要的。 一、现金买入 现…

“技术”已成为京东持续“低价”的底气和重要动能

监制 | 何玺 排版 | 叶媛 10月19日&#xff0c;京东宣布今年的双十一将在10月23日晚8点正式开启。 今年双十一&#xff0c;京东向全体消费者做出了两项承诺&#xff1a;一是所有商品均“现货开卖”&#xff0c;无需等待。二是“全程价保”覆盖8亿商品&#xff0c;让消费者真正…

【学习草稿】bert文本分类

https://github.com/google-research/bert https://github.com/CyberZHG/keras-bert 在 BERT 中&#xff0c;每个单词的嵌入向量由三部分组成&#xff1a; Token 嵌入向量&#xff1a;该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。 Segment 嵌入向量&#x…

SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附&#xff1a;系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

生鲜蔬果社区团购小程序商城的作用是什么

摆在生鲜蔬果商家面前的难题也非常明显&#xff0c;商家缺少营销方式&#xff0c;难以满足基本营销需求&#xff0c;经营没有方向&#xff0c;订单难以管理&#xff0c;商品也难以管理&#xff0c;难以打通引流-转化-留存-复购-裂变-分享路径&#xff0c;线下门店整体而言经营压…

【Ubuntu】Ubuntu20.04安装EasyConnect后打不开的问题。

1 安装过程 (1) 软件下载 EasyConnect下载地址 (2) 安装 dpkg -i EasyConnect_x64_7_6_7_3.deb 如果需要卸载的话,可使用如下命令: dpkg -r EasyConnect 双击EasyConnect图标,发现出现打不开的问题。 2 解决方法 首先,先看看是什么原因打不开呢? gedit /usr/share…

基于轻量级yolov5n+CBAM开发构建全球小麦麦穗智能检测计数系统

本文是前文的延伸内容&#xff0c;前文主要是对单个麦穗上麦穗颗粒的检测计数&#xff0c;这里本文的主要目的是要对麦穗进行智能化自动化的检测计数&#xff0c;话不多说&#xff0c;简单先看下效果&#xff1a; 接下来看下数据集&#xff1a; YOLO格式标注文件如下所示&…

社区版Visual Studio通过安装开源插件Fine Code Coverage实现单元测试代码覆盖率统计

1、在Visual Studio上安装Fine Code Coverage插件 扩展->管理扩展->联机 搜索到Fine Code Coverage插件&#xff0c;选中进行下载安装 2、修改Fine Code Coverage配置 如果单元测试框架用的是MSTest&#xff0c;一般需要修改插件配置&#xff0c;否则测试结果不正确 …