当前位置: 首页 > 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.dtcms.com/a/316665.html

相关文章:

  • unity之 贴图很暗怎么办
  • Redis作为MySQL缓存的完整指南:从原理到实战
  • 《算法导论》第 4 章 - 分治策略
  • Nature Neuroscience | 如何在大规模自动化MRI分析中规避伪影陷阱?
  • 虚拟电场:能源互联网的隐形交响乐团
  • 基于SD地图增强无图车道线和拓扑推理
  • 【25-cv-23395】宠物/婴儿玩具品牌BESTSKY商标维权!
  • 面向对象编程基础:类的实例化与对象内存模型详解
  • Java基础面试题(1)—Java优势(JVM,JRE,JIT,Java类,方法)
  • RHCA04--系统模块管理与资源限制
  • 91、【OS】【Nuttx】【启动】栈溢出保护:配置项添加
  • 第13届蓝桥杯Scratch_选拔赛_初级组_真题2022年1月22日
  • GPTs和AssistantAPl和Alagent的区别联系
  • 8月5号打卡
  • 智慧社区(八)——社区人脸识别出入管理系统设计与实现
  • 1panel服务器管理工具
  • QML开发:QML的第一个程序
  • Qt Quick 之动态旋转刻度盘(无人机中指南针 Demo )
  • 400V降24V,200mA,应用领域:从生活到工业的 “全能电源管家”WD5208
  • 华清远见25072班C语言学习day2
  • Z20K118库中寄存器及其库函数封装-CLOCK库
  • Boosting 知识点整理:机制、对比与应用场景
  • TDengine 中 TDgp 中部署时序基础模型
  • Android10 系统休眠调试相关
  • 力扣热题100-------169.多数元素
  • 工作相关: 预刷真值与人工标注的真值之间的关系 以及 真值与原始数据的关系,
  • 站在JS的角度,看鸿蒙中的ArkTs
  • 从汇编角度揭秘C++构造函数(1)
  • 数据安全——解读大数据安全架构设计方案【附全文阅读】
  • 力扣-283.移动零