pyqt5+eric实现测试界面小工具(二)

前面一篇介绍了页面的绘制和后台主要框架的代码,接下来介绍一下信号和槽的关联。信号和槽是QT的核心机制,信号,是指鼠标和键盘上的各种操作事件,槽是从英文单词slot里翻译过来的,查了一下这个单词的含义,按划红线处的理解比较合适,即指不同的信号发生后,我们调用对应处置的方法。

信号和槽的实现,需要了解各类控件有哪些信号,需要的时候,也可以自定义信号,下面以QTextEdit和QPushButton为例来介绍如何实现信号槽的联动

编写信号和槽

QTextEdit类是一个多行文本控制控件,可以显示多行文本内容,当文本超出控件的显示范围时,会自动生成垂直滚动条。

常用的方法如下:

QPushButton是普通的按钮

我们想设计一个小工具,从第一个QTextEdit里输入json字符串,从第二个QTextEdit输入jsonpath表达式,用最后一个框QTextBrowser显示jsonpath表达式提取的结果。

 根据我们的工具需求,设计的信号和槽,大体应该是,点击QPushButton的时候,获取两个QTextEdit里输入的字符串,进行jsonpath的提取,最终回显在QTextBrowser上。

信号和槽的写法如下

self.pushButton.clicked.connect(self.get_value)

这里的信号就是对QPushButton的clicked动作,connect链接到对应的槽,即要做什么,get_value是一个方法,但是这里注意不需要括号

最小集代码如下(未做异常处理)

import sys

import jsonpath
import json

from PyQt5.QtWidgets import *
from pjsonpath.Ui_pjsonpath import *


class MyMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.get_value)
        
    def get_value(self):
        '''
        匹配Jsonpath结果
        :param source_str: 目标字符串
        :param pattern: jsonpath表达式
        :return: 匹配结果
        '''
        source_str = self.textEdit.toPlainText()
        pattern = self.textEdit_2.toPlainText()
        if not pattern.startswith("$."):
            write_result("JSONPATH表达式格式错误!")
            raise Exception("JSONPATH表达式格式错误!")
        result = jsonpath.jsonpath(json.loads(source_str), pattern)
        self.printf("匹配到如下结果,共{}条记录:\n\n{}".format(len(result) if result!=None else 0,'\n'.join([str(r) for r in result]) if result!=None else "null"))

        
    def printf(self,mypstr,logtype = None):
        '''文本框输出
        '''
        self.textBrowser.append(mypstr)
        self.cursor=self.textBrowser.textCursor()
        self.textBrowser.moveCursor(self.cursor.End)
        QtWidgets.QApplication.processEvents()
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    q = MyMainWindow()
    q.show()
    sys.exit(app.exec())

执行后效果如图

 

 基本的流程完成后,则可以对这个小工具做一些异常处理,界面优化等工作,下篇再继续

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值