Python GUI编程:通过PySide2实现一个简单的postman工具

简介: 接下来,我们就实现send按钮发送请求的功能:要实现这个功能,主要需要了解以下几点:1、下拉框如何获取选中的值2、文本框如果获取选中的值3、按钮怎么绑定事件4、怎么将某个文本显示到某个控件上。

前置文章

Python GUI编程:PySide2介绍

Python GUI编程:如何运行第一个PySide2的窗体程序

Python GUI编程:PySide2页面设计优化

Python GUI编程:PySide2通过加载页面设计文件的方式运行

在掌握了以上4篇文章的内容后,我们可以画出一个简易的postman工具的页面,如下图所示:


微信图片_20220114151724.png


接下来,我们就实现send按钮发送请求的功能:

要实现这个功能,主要需要了解以下几点:

1、下拉框如何获取选中的值

获取ComboBox索引和选中的文本值,索引从0开始
ComboBox.currentIndex(), ComboBox.currentText()

2、文本框如果获取选中的值

    QLineEdit.text()

    3、按钮怎么绑定事件


      QPushButton.clicked.connect(方法名)

      4、怎么将某个文本显示到某个控件上

        控件名.append("文本")


        完整的代码如下:

        import sys, requests
        from PySide2.QtCore import QFile
        from PySide2.QtUiTools import QUiLoader
        from PySide2.QtWidgets import QApplication
        # 1、创建一个应用程序
        app = QApplication(sys.argv)
        # 2、打开.ui文件
        qFile = QFile('postman.ui')
        qFile.open(QFile.ReadOnly) # 只读方式
        # 3、加载文件,生成一个页面对象
        ui = QUiLoader().load(qFile)
        qFile.close()
        # 做一些逻辑处理
        def click_send_btn():
            method =ui.method_comboBox.currentText().lower()
            url = ui.url_text.text()
            res = requests.request(method=method, url=url).text
            ui.res_textEdit.append(res)
            print(method, url)
        def click_exit_btn():
            ui.close()
        ui.send_btn.clicked.connect(click_send_btn)
        ui.close_btn.clicked.connect(click_exit_btn)
        # 4、显示应用程序
        ui.show()
        app.exec_()

        页面UI设计文件源码如下:

        <?xml version="1.0" encoding="UTF-8"?>
        <ui version="4.0">
         <class>PostmanTools</class>
         <widget class="QDialog" name="PostmanTools">
          <property name="geometry">
           <rect>
            <x>0</x>
            <y>0</y>
            <width>948</width>
            <height>537</height>
           </rect>
          </property>
          <property name="windowTitle">
           <string>简易Postman Tools</string>
          </property>
          <widget class="QComboBox" name="method_comboBox">
           <property name="geometry">
            <rect>
             <x>70</x>
             <y>30</y>
             <width>81</width>
             <height>31</height>
            </rect>
           </property>
           <item>
            <property name="text">
             <string>GET</string>
            </property>
           </item>
           <item>
            <property name="text">
             <string>POST</string>
            </property>
           </item>
          </widget>
          <widget class="QLineEdit" name="url_text">
           <property name="geometry">
            <rect>
             <x>170</x>
             <y>30</y>
             <width>541</width>
             <height>31</height>
            </rect>
           </property>
          </widget>
          <widget class="QPushButton" name="send_btn">
           <property name="geometry">
            <rect>
             <x>760</x>
             <y>30</y>
             <width>151</width>
             <height>31</height>
            </rect>
           </property>
           <property name="text">
            <string>Send</string>
           </property>
          </widget>
          <widget class="QLabel" name="label">
           <property name="geometry">
            <rect>
             <x>70</x>
             <y>90</y>
             <width>72</width>
             <height>15</height>
            </rect>
           </property>
           <property name="text">
            <string>Params</string>
           </property>
          </widget>
          <widget class="QLabel" name="label_2">
           <property name="geometry">
            <rect>
             <x>160</x>
             <y>90</y>
             <width>121</width>
             <height>21</height>
            </rect>
           </property>
           <property name="text">
            <string>Headers</string>
           </property>
          </widget>
          <widget class="QTextEdit" name="res_textEdit">
           <property name="geometry">
            <rect>
             <x>70</x>
             <y>150</y>
             <width>821</width>
             <height>331</height>
            </rect>
           </property>
          </widget>
          <widget class="QPushButton" name="close_btn">
           <property name="geometry">
            <rect>
             <x>280</x>
             <y>90</y>
             <width>93</width>
             <height>28</height>
            </rect>
           </property>
           <property name="text">
            <string>Close</string>
           </property>
          </widget>
          <widget class="QPushButton" name="reset_btn">
           <property name="geometry">
            <rect>
             <x>420</x>
             <y>90</y>
             <width>93</width>
             <height>28</height>
            </rect>
           </property>
           <property name="text">
            <string>重置</string>
           </property>
          </widget>
         </widget>
         <resources/>
         <connections/>
        </ui>

        运行效果:


        微信图片_20220114151728.png


        接下来就可以自己扩展一下页面设计,然后实现更多的功能。另外,如果响应结果太大,页面渲染会卡死,也可以思考一下如何去优化。


        相关文章
        |
        13天前
        |
        安全 Java 数据处理
        Python网络编程基础(Socket编程)多线程/多进程服务器编程
        【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
        |
        5天前
        |
        机器学习/深度学习 数据挖掘 计算机视觉
        python数据分析工具SciPy
        【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
        11 1
        |
        6天前
        |
        安全 数据处理 开发者
        《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
        《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
        19 1
        |
        6天前
        |
        人工智能 数据挖掘 程序员
        《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
        《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
        35 0
        |
        6天前
        |
        数据可视化 数据挖掘 Python
        Python中数据分析工具Matplotlib
        【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title(&#39;简单折线图&#39;) plt.xlabel(&#39;X轴&#39;) plt.ylabel(&#39;Y轴&#39;) plt.show() ```
        10 1
        |
        6天前
        |
        数据采集 SQL 数据可视化
        Python数据分析工具Pandas
        【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
        12 1
        |
        7天前
        |
        API Python
        Python模块化编程:面试题深度解析
        【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
        20 0
        |
        7天前
        |
        Python
        Python金融应用编程:衍生品定价和套期保值的随机过程
        Python金融应用编程:衍生品定价和套期保值的随机过程
        22 0
        |
        8天前
        |
        Python
        python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
        python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
        49 0
        |
        8天前
        |
        机器学习/深度学习 算法 定位技术
        python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
        python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
        23 1