当前位置: 首页 > news >正文

PYQT的QMessageBox使用示例

目录

1. 使用PyQT创建一个简单的图形界面
2. signal 和 slot(信号与槽)

一、代码

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit, QMessageBox# 定义一个槽函数:当按钮被点击时执行的操作
def on_button_clicked():# 获取文本框中的内容content = textEdit.toPlainText()# 判断内容是否为空if not content.strip():# 显示警告对话框:提示用户输入内容QMessageBox.warning(window,          # 父窗口"警告",          # 对话框标题"请先输入薪资表内容!"  # 提示信息)else:# 显示信息对话框:告知用户统计完成QMessageBox.information(window,          # 父窗口"完成",          # 对话框标题"薪资统计已完成!\n共统计了 {} 行数据".format(len(content.splitlines())))print('统计完成,内容长度:', len(content))app = QApplication([])window = QMainWindow()
window.resize(500, 400)
window.move(2000, 1010)
window.setWindowTitle('薪资统计')textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入薪资表")
textEdit.move(10,25)
textEdit.resize(300,350)button = QPushButton('统计', window)
button.move(380,80)# 将按钮的"点击信号"与"槽函数"连接起来
button.clicked.connect(on_button_clicked)window.show()app.exec_()

二、运行效果

1、如果在文本框中什么都没输入,就直接点统计,就会弹出警告

在这里插入图片描述

2、如果我在文本框中输入三行数据,再去点统计就会弹出完成提示:统计了三行数据

在这里插入图片描述

三、代码分析

1、本次示例中新增了一个类:QMessageBox

它的作用是:
显示各种标准对话框,主要用于向用户展示信息警告错误提示,或者获取用户确认等交互操作。
它提供了便捷的方法来创建常见的对话框,无需手动设计复杂的界面。
QMessageBox 常用的功能包括:
显示信息提示(如操作成功的通知)
显示警告信息(如可能存在的风险)
显示错误信息(如操作失败的原因)
询问用户确认(如 “是否确定删除”)
获取用户简单的输入选择

2、在文本框输入后,行数是怎么计算的?

        # 显示信息对话框:告知用户统计完成QMessageBox.information(window,          # 父窗口"完成",          # 对话框标题"薪资统计已完成!\n共统计了 {} 行数据".format(len(content.splitlines())))

这段代码通过 content.splitlines() 来计算文本的行数,具体原理如下:

content是从文本框中获取的所有内容(字符串类型)
splitlines() 方法这是 Python 字符串的一个方法,作用是按换行符分割字符串,返回一个包含所有行的列表。它会识别各种换行符(\n、\r\n 等)例如,字符串 “a\nb\nc” 会被分割成 [“a”, “b”, “c”]
len() 函数计算这个列表的长度,也就是文本的行数

3、format() 方法

是字符串的一个方法,用于将变量或值插入到字符串中的指定位置,实现字符串的格式化。

"薪资统计已完成!\n共统计了 {} 行数据".format(len(content.splitlines()))

这里的 {} 是一个 “占位符”,format() 会把括号里的值(也就是 len(content.splitlines()) 计算出的行数)放到这个占位符的位置。

http://www.lryc.cn/news/611252.html

相关文章:

  • 深入理解 Ext 系列文件系统:从磁盘物理到文件系统原理
  • 注意点:如何使用conda创建虚拟环境并使用虚拟环境以及当安装相关库时,如何指定安装到那个环境里面 ---待看
  • LINUX-进程管理及基础管理
  • Java开发时出现的问题---并发与资源管理深层问题
  • OpenSpeedy绿色免费版下载,提升下载速度,网盘下载速度等游戏变速工具
  • day25 进程
  • FastAPI快速入门P2:与SpringBoot比较
  • 【数据结构初阶】--排序(三):冒泡排序,快速排序
  • add_key系统调用及示例
  • 《C++》继承完全指南:从入门到精通
  • 【Day 16】Linux-性能查看
  • 计算机基础:操作系统学习的基石
  • 分布式微服务--Nacos 集群部署
  • RabbitMQ延时队列的两种实现方式
  • 磁悬浮转子的“静音术”:深度解析无接触抑制旋转幽灵的奥秘
  • 基于华为开发者空间的Open WebUI数据分析与可视化实战
  • 【Linux系统编程】线程概念与控制
  • MATLAB实现菲涅尔法全息成像仿真
  • Spring Boot 整合 Web 开发全攻略
  • Java面试宝典:深入解析JVM运行时数据区
  • Linux 内存管理之 Rmap 反向映射(二)
  • EP01:【DL 第二弹】张量(Tensor)的创建和常用方法
  • BloodHound 8.0 首次亮相,在攻击路径管理方面进行了重大升级
  • IPD研发管理——决策评审DCP指南
  • Java从入门到精通 - 集合框架(一)
  • MySQL主从延迟到崩溃:Binlog格式、半同步复制与GTID的博弈
  • 视频转二维码在教育场景中的深度应用
  • 结合opencv解释图像处理中的结构元素(Structuring Element)
  • 【Java企业级开发】(七)Spring框架
  • 区块链:重构信任的价值互联网革命​