PyQT5总结

前言

       做自动化测试也有3年了,一直用的Python,从听说,到接触,到摸索,一直不断学习。近段时间看了下PyQT5,然后自己写了个小工具,写篇文章总结下。

 

环境安装

        先从环境安装说起吧。我用的是Anaconda3的环境,因为里面已经有了我开发需要的所有插件。包括它自带的Python,开发用的IDE是Pycharm 2019.3.

首先下载Anaconda3,并进行安装。安装完成首先要配置pycharm上的环境。

 

1.选择你对应的解析器,你的Python代码才能运行

2.配置conda环境,选择你安装Anaconda3的安装路径,因为我之前就是这个没配置,导致运行QT代码时总是提示找不到文件

3.Pycharm配置QTDesigner(用来通过拖拉拽的方式设计工具页面)

3.Pycharm配置Pyuic(用来将QtDesigner设计的页面转换成py文件)

Progream :  插件位置(如:/Volumes/disk/opt/anaconda3/bin/pyuic5)

Argument : $FileName$ -o $FileNameWithoutExtension$.py

Working Directory: $ProjectFileDir$

 

说明

        以上这些配置好后就完成后选定项目文件夹,右键菜单 选择External Tool 会出现刚才配置的两个插件。

点击Designer后会出现如下页面,然后就可以进行工具页面的设计了。

设计完成保存后会生成以.ui后缀的文件,用pyuic转换成py文件,这就是前端代码

以下是前后代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'GUI_Request.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(640, 480)
        self.label_URL = QtWidgets.QLabel(Dialog)
        self.label_URL.setGeometry(QtCore.QRect(20, 30, 61, 31))
        self.label_URL.setObjectName("label_URL")
        self.textEdit_URL = QtWidgets.QTextEdit(Dialog)
        self.textEdit_URL.setGeometry(QtCore.QRect(90, 30, 331, 31))
        self.textEdit_URL.setObjectName("textEdit_URL")
        self.label_Method = QtWidgets.QLabel(Dialog)
        self.label_Method.setGeometry(QtCore.QRect(20, 80, 61, 21))
        self.label_Method.setObjectName("label_Method")
        self.request_Method = QtWidgets.QComboBox(Dialog)
        self.request_Method.setGeometry(QtCore.QRect(90, 70, 104, 41))
        self.request_Method.setObjectName("request_Method")
        self.request_Method.addItem("")
        self.request_Method.addItem("")
        self.request_Method.addItem("")
        self.request_Method.addItem("")
        self.Button_Requests = QtWidgets.QPushButton(Dialog)
        self.Button_Requests.setGeometry(QtCore.QRect(470, 30, 113, 32))
        self.Button_Requests.setObjectName("Button_Requests")
        self.Button_Clear = QtWidgets.QPushButton(Dialog)
        self.Button_Clear.setGeometry(QtCore.QRect(470, 80, 113, 32))
        self.Button_Clear.setObjectName("Button_Clear")
        self.label_Respones = QtWidgets.QLabel(Dialog)
        self.label_Respones.setGeometry(QtCore.QRect(20, 260, 91, 16))
        self.label_Respones.setObjectName("label_Respones")
        self.textBrowser_Respones = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser_Respones.setGeometry(QtCore.QRect(20, 280, 601, 192))
        self.textBrowser_Respones.setObjectName("textBrowser_Respones")
        self.label_Body = QtWidgets.QLabel(Dialog)
        self.label_Body.setGeometry(QtCore.QRect(20, 120, 60, 16))
        self.label_Body.setObjectName("label_Body")
        self.textEdit_Body = QtWidgets.QTextEdit(Dialog)
        self.textEdit_Body.setGeometry(QtCore.QRect(90, 120, 531, 131))
        self.textEdit_Body.setObjectName("textEdit_Body")

        self.retranslateUi(Dialog)
        self.Button_Clear.clicked.connect(Dialog.clearText)     # clearText 为MyRequest.py后端代码中的clearText方法
        self.Button_Requests.clicked.connect(Dialog.myRequests) # myRequests 为MyRequest.py后端代码中的myRequests方法
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.label_URL.setText(_translate("Dialog", "请求地址:"))
        self.label_Method.setText(_translate("Dialog", "请求方式:"))
        self.request_Method.setItemText(0, _translate("Dialog", "GET"))
        self.request_Method.setItemText(1, _translate("Dialog", "POST"))
        self.request_Method.setItemText(2, _translate("Dialog", "PUT"))
        self.request_Method.setItemText(3, _translate("Dialog", "DELETE"))
        self.Button_Requests.setText(_translate("Dialog", "请求"))
        self.Button_Clear.setText(_translate("Dialog", "清空"))
        self.label_Respones.setText(_translate("Dialog", "接口返回内容:"))
        self.label_Body.setText(_translate("Dialog", "请求参数:"))

接下来就是后端逻辑代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

"""
@File    :   MyRequests.py
@Author  :   Ricky
@Time    :   2021/1/7 14:36
"""

import sys
from demo import GUI_Request
from PyQt5.QtWidgets import QApplication, QDialog


import requests


class MainDialog(QDialog):
    def __init__(self, parent=None):
        super(QDialog, self).__init__(parent)
        self.ui = GUI_Request.Ui_Dialog()
        self.ui.setupUi(self)

    def myRequests(self):
        """请求接口"""
        request_url = self.ui.textEdit_URL.toPlainText()
        request_Method = self.ui.request_Method.currentText()
        request_body = eval(str(self.ui.textEdit_Body.toPlainText()).replace("true","True").replace("false","False").replace("null","None"))
        header = {"Content-Type": "application/json;charset=UTF-8"}
        if request_Method == "GET":
            res = requests.get(url=request_url,headers=header)
            self.ui.textBrowser_Respones.setText(res.text)
        elif request_Method == "POST":
            res = requests.post(url=request_url,json=request_body,headers=header)
            self.ui.textBrowser_Respones.setText(res.text)
        elif request_Method == "PUT":
            res = requests.put(url=request_url,json=request_body,headers=header)
            self.ui.textBrowser_Respones.setText(res.text)
        elif request_Method == "DELETE":
            res = requests.delete(url=request_url,json=request_body,headers=header)
            self.ui.textBrowser_Respones.setText(res.text)


    def clearText(self):
        """清空数据"""
        self.ui.textEdit_URL.clear()
        self.ui.textEdit_Body.clear()
        self.ui.textBrowser_Respones.clear()

if __name__ == '__main__':
    myapp = QApplication(sys.argv)
    myDlg = MainDialog()
    myDlg.show()
    sys.exit(myapp.exec_())

运行后端代码就会出现如下界面(我自己偷偷写了两个接口来测试了下这个工具)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值