ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于qt pyside2的小工具

2022-05-03 08:34:45  阅读:198  来源: 互联网

标签:基于 qt url self headers ui pyside2 data result


from PySide2.QtWidgets import QApplication, QMessageBox,QPlainTextEdit
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
from PySide2.QtGui import QIcon
import requests


class Stats():
    def __init__(self):
        '''
        从文件中加载UI定义,固定写法
        '''
        qfile_stats = QFile("UI/interfacetool.ui")
        qfile_stats.open(QFile.ReadOnly)
        qfile_stats.close()

        '''
        加载用Qt画好的窗口文件,也可以说创建一个动态窗口文件
        注意:里面的控件对象也成为窗口对象的属性了
        比如 self.ui.button , self.ui.textEdit。而其中的button是我在Qt里添加的按钮名字也就是属性名(objectName)
        这里可以随意取名字,可以叫button也可是A,如果是A则下面的写法为self.ui.A.clicked.connect(self.handleCalc)

        '''
        self.ui = QUiLoader().load(qfile_stats)
        '''点击发送按钮'''
        self.ui.pushButton.clicked.connect(self.send)
        '''点击清除按钮'''
        self.ui.clear.clicked.connect(self.clear)

        '''调取requests发起请求'''
    def run_main(self, method=None, url=None, data=None,headers=None):
        result = None
        if method == 'POST':
            result = requests.post(url=url, data=data, headers=headers)
        elif method == 'GET':
            result = requests.get(url=url, data=data, headers=headers)
        elif method == 'PUT':
            result = requests.PUT(url=url, data=data, headers=headers)
        elif method == 'DELETE':
            result = requests.DELETE(url=url, data=data, headers=headers)
        else:
            print("错误")
        return result

    def get_headers(self,header_raw):
        """
        通过原生请求头获取请求头字典
        :param header_raw: {str} 浏览器请求头
        :return: {dict} headers
        """
        return dict(line.split(": ", 1) for line in header_raw.split("\n"))

    def send(self):
        '''获取界面输入的请求方法的值'''
        method = self.ui.comboBox.currentText()

        '''获取界面输入的URL值'''
        url = self.ui.lineEdit.text()

        '''获取界面输入的请求头值'''
        headers = self.get_headers(self.ui.plainTextEdit.toPlainText())

        '''获取界面输入的请求体值,eval是将字符串转化为列表或是字符'''
        data = eval(self.ui.plainTextEdit_2.toPlainText())

        '''获取响应的值'''
        result = self.run_main(method, url, data, headers).text
        print(result)

        '''将获取的响应值输入到制定文本框中'''
        self.ui.plainTextEdit_3.setPlainText(result)

    def clear(self):
        '''将文本框中的值清除掉'''
        self.ui.lineEdit.clear()
        self.ui.plainTextEdit.clear()
        self.ui.plainTextEdit_2.clear()
        self.ui.plainTextEdit_3.clear()

if __name__=="__main__":
    app = QApplication([])
    '''设置运行窗口的图标'''
    app.setWindowIcon(QIcon("UI/js.png"))
    '''实例化类'''
    stats = Stats()
    '''放在主窗口的控件,要能全部显示在界面上, 必须加上下面这行代码'''
    stats.ui.show()
    '''进入QApplication的事件处理循环,接收用户的输入事件(),并且分配给相应的对象去处理。'''
    app.exec_()``

用Qt设计的小工具界面
image

代码运行后显示的界面如下,可以根据自己的要求对代码进行微调,这个代码是最基础的,还有很多需要优化的地方,比如异常处理、多线程的实现等等
image

标签:基于,qt,url,self,headers,ui,pyside2,data,result
来源: https://www.cnblogs.com/striver-dl/p/16217598.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有