PyQt5精简正则表达式测试小工具

简介: PyQt5精简正则表达式测试小工具,本人自制的小APP。希望大家多多推荐哦!

PyQt5精简正则表达式测试小工具
https://pan.baidu.com/s/1e50u0YVswrqeB3PS_JqulA 网盘链接
首先我们打开QtDesigner创建一个Dialog窗口

_

如下图:
第1步:先调出三个布局,在Layouts中调出下面3个红框框(当然这布也可以省去,直接弄出下面的文档,及按钮),注意布局讲究顺序,把需要添加的按钮移动至布局中即可。

_

第2步:自由添加标签Label,双击即可修改标签名(方便调用)
添加两个文本编辑框Text Edit 以及一个行编辑框Line Edit
添加两个Spacers,以便隔开文本框按钮(美观)
第3步:打开信号槽按钮,如下图

_

添加信号槽函数,如下图点击拖动至某位置,就会弹出如下文本框,如想要点击的效果,就可以连接让clicked()连接槽函数,可以选择已经拥有的,也可以自己定义。这里自己用自己定义的函数,下面有个Edit点击,添加slot1()函数,接下来就可以自己定义啦!然后保存文件至pycharm下即可。
简单介绍一下下面的信号,还不懂就自己去问度娘啦!

QAbstractButton 提供的信号选择:
1、pressed(),当鼠标在button上并点击左键的时候 触发信号
2、released(),当鼠标左键被释放的时候触发信号
3、clicked(),当鼠标首次按下,然后释放,或者快捷键被释放的时候触发信号
4、toggled(),当button的标记状态发生改变的时候触发信号

_

第4步,如下图找到自己制作的ui文件直接生成PyUIC文件即可

_

第5步,找到槽函数,这里需要注意,改变变量使Dialog变为self
self.retranslateUi(Dialog)
self.pushButton_2.clicked.connect(Dialog.slot2)
self.pushButtontextEdit.clicked.connect(Dialog.slot1)
self.pushButtontextEdit_2.clicked.connect(Dialog.slot3)
QtCore.QMetaObject.connectSlotsByName(Dialog)

即如下
self.pushButton_2.clicked.connect(self.slot2)
self.pushButtontextEdit.clicked.connect(self.slot1)
self.pushButtontextEdit_2.clicked.connect(self.slot3)

第6步,定义槽函数
让clear()函数连接清除textEdit文本框功能

def slot1(self):
    print('*slot1')
    self.textEdit.clear()

我们要使匹配结果输出在第三个文本框,就要使用以下输出方式,将lineEdit_2的文本内容输出赋给pattern。用text()
将textEdit的文本内容输出赋给string。 用toPlainText()

利用正则表达式,re.findall()来传入表达式,文本内容,利用','.join()来分开字符串,再利用setText()来将得出的结果呈现在textEdit_2上

def slot2(self):
    print('* slot2  ')
    pattern = self.lineEdit_2.text()
    string = self.textEdit.toPlainText()
    textEdit_22 = re.findall(pattern, string)
    textEdit_222 = ','.join(textEdit_22)
    self.textEdit_2.setText(textEdit_222)

最后一步,添加主函数,将窗口运行显现出来

if __name__ == '__main__':
    app =QApplication(sys.argv)
    QQ  =QDialog()
    ui = Ui_Dialog()
    ui.setupUi(QQ)
    QQ.show()
    sys.exit(app.exec_())

全部代码如下:希望可以支持一下在下

# Form implementation generated from reading ui file 'hhh.ui'
# Created by: PyQt5 UI code generator 5.11.2
# WARNING! All changes made in this file will be lost!
# -*- coding: utf-8 -*-
import re
import sys
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(763, 519)
        self.verticalLayoutWidget = QtWidgets.QWidget(Dialog)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(20, 20, 611, 161))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.textEdit = QtWidgets.QTextEdit(self.verticalLayoutWidget)
        self.textEdit.setObjectName("textEdit")
        self.verticalLayout.addWidget(self.textEdit)
        self.horizontalLayoutWidget_2 = QtWidgets.QWidget(Dialog)
        self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(20, 190, 611, 41))
        self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_3 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_2.addWidget(self.label_3)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2)
        self.lineEdit_2.setEnabled(True)
        self.lineEdit_2.setMaxLength(32782)
        self.lineEdit_2.setFrame(True)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.horizontalLayout_2.addWidget(self.lineEdit_2)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)
        self.verticalLayoutWidget_2 = QtWidgets.QWidget(Dialog)
        self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(20, 250, 611, 251))
        self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.textEdit_2 = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
        self.textEdit_2.setObjectName("textEdit_2")
        self.verticalLayout_2.addWidget(self.textEdit_2)
        self.verticalSlider = QtWidgets.QSlider(Dialog)
        self.verticalSlider.setGeometry(QtCore.QRect(0, 500, 22, 160))
        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
        self.verticalSlider.setObjectName("verticalSlider")
        self.pushButtontextEdit = QtWidgets.QPushButton(Dialog)
        self.pushButtontextEdit.setGeometry(QtCore.QRect(650, 100, 93, 28))
        self.pushButtontextEdit.setObjectName("pushButtontextEdit")
        self.pushButtontextEdit_2 = QtWidgets.QPushButton(Dialog)
        self.pushButtontextEdit_2.setGeometry(QtCore.QRect(650, 360, 93, 28))
        self.pushButtontextEdit_2.setObjectName("pushButtontextEdit_2")

        self.retranslateUi(Dialog)
        self.pushButton_2.clicked.connect(self.slot2)
        self.pushButtontextEdit.clicked.connect(self.slot1)
        self.pushButtontextEdit_2.clicked.connect(self.slot3)
        QtCore.QMetaObject.connectSlotsByName(Dialog)





    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.label.setText(_translate("Dialog", "待匹配输入文本"))
        self.label_3.setText(_translate("Dialog", "正则表达式"))
        self.pushButton_2.setText(_translate("Dialog", "匹配测试"))
        self.label_2.setText(_translate("Dialog", "匹配结果:"))
        self.pushButtontextEdit.setText(_translate("Dialog", "clear"))
        self.pushButtontextEdit_2.setText(_translate("Dialog", "clear"))


    def slot2(self):
        print('* slot2  ')
        pattern = self.lineEdit_2.text()
        string = self.textEdit.toPlainText()
        textEdit_22 = re.findall(pattern, string)
        textEdit_222 = ','.join(textEdit_22)
        self.textEdit_2.setText(textEdit_222)

    def slot1(self):
        print('*slot1')
        self.textEdit.clear()

    def slot3(self):
        print('*slot3')
        self.textEdit_2.clear()


if __name__ == '__main__':
    app =QApplication(sys.argv)
    QQ  =QDialog()
    ui = Ui_Dialog()
    ui.setupUi(QQ)
    QQ.show()
    sys.exit(app.exec_())

https://pan.baidu.com/s/1e50u0YVswrqeB3PS_JqulA 网盘链接

相关文章
|
3月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
353 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
3月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
146 6
|
4月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
887 10
|
4月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
542 0
|
5月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
6月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
986 23
|
6月前
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
5月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
6月前
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
1313 4
|
8月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
1093 24