在介绍 PySide2 的功能之前,
先给大家推荐一个非常好用的图形化设计工具:Qt Designer
代码实现都是基于这个工具上的元件配置来写的
在这里插入图片描述

一、Qt Designer 可执行程序的路径

  • 1、下载 PySide2 第三方库:

    方法一:CMD命令行:pip install pyside2
    方法二:PyCharm 的 Settings 里面安装【不作详细描述】

  • 2、Qt Designer 的执行程序在 Python安装目录下的:\Lib\site-packages\PySide2 ,双击即可运行:

    C:\Users\user\AppData\Local\Programs\Python\Python36\Lib\site-packages\PySide2

    在这里插入图片描述

二、工具常用控件标注:

  • 一般自己设计简单的工具,只需要掌握这些元件的使用即可
    在这里插入图片描述
    在这里插入图片描述

三、Label:功能实现

  • 1、一般标注为其他功能元件的描述,如下图所示:
    在这里插入图片描述
  • 2、实现插入图片【Label控件的QLabel的Pixmap属性,点击右侧文件选择上传即可】:
    在这里插入图片描述

四、PushButton:可点击按钮【常用来关联执行方法】

在这里插入图片描述

  • 1、按钮绑定执行方法,就能在按钮被点击时触发 Login 方法实现登录:

    '''按钮绑定登陆方法'''
    self.comboBox.currentIndexChanged.connect(self.Login)
    
    '''新增用户'''
    def Login(self):
        url = ip_port + "/api/login"
        json = {
                "loginId": phone,
                "pwd": pwd
                }
        headers = {'Content-Type': 'application/json'}
        response = requests.request("POST", url, headers=headers, json=json)
        print("登陆成功!")
    

五、Line Edit:单行文本输入框

在这里插入图片描述

  • 1、文本框设置提示文案:self.lineEdit.setPlaceholderText(“请输入提示文案:”)
  • 2、文本框------文案获取:self.lineEdit.text()
  • 3、文本框------文案重置:self.lineEdit.clear()
  • 4、文本框文案设置文本:self.lineEdit.setText(“admin”)

六、Plain Text Edit :多行文本输入框

  • 1、文本框设置提示文案:self.plainTextEdit.setPlaceholderText(“请输入提示文案:”)
  • 2、文本框------文案获取:self.plainTextEdit.text()
  • 3、文本框------文案重置:self.plainTextEdit.clear()
  • 4、文本框文案设置文本:self.plainTextEdit.setText(“admin”)

七、Text Browser:文本浏览框【一般用来展示输出结果】

  • 1、文本框设置提示文案:self.textBrowser.setPlaceholderText(“请输入提示文案:”)
  • 2、文本框------文案获取:self.textBrowser.text()
  • 3、文本框------文案重置:self.textBrowser.clear()
  • 4、文本框文案设置文本:self.textBrowser.append(“admin”)

八、ComboBox:下拉选择框

  • 1、下拉控件添加选项:self.comboBox.addItems([‘测试环境’,‘正式环境’])

  • 2、获取当前选项文本:self.comboBox.currentText()

  • 3、根据选项值改变请求参数【简单代码实现】:

    '''写一个选项切换的方法,返回请求的ip_port'''
    def ChangeEnv(self):
        # 获取当前选项文本
        Env_text = self.ui.comboBox.currentText()
        if Env_text == "测试环境":
            ip_port = "http://baidu-test.cn"
        else:
            ip_port = "https://baidu.com"
        return ip_port
    
    def Login(self):
    	ip_port = self.ChangeEnv()
        json = {
               "loginId": phone,
               "pwd": pwd
            }
        headers = {'Content-Type': 'application/json'}
        response = requests.request("POST", url, headers=headers, json=json)
        print("登陆成功!")
    

九、CheckBox:多选按钮复选框

在这里插入图片描述

  • 1、 一键全选/取消全选【True 改为 False 即可】

    def __init__(self):
        self.pushButton.clicked.connect(self.All_Choose) # 按钮绑定方法
        
    '''定义一个全选按钮的方法'''       
    # setChecked():传入True则为选中,传入False则为取消选中
    def All_Choose(self):
        self.ui.checkBox_apple.setChecked(True)
        self.ui.checkBox_banana.setChecked(True)
        self.ui.checkBox_pear.setChecked(True)
    
  • 2、勾选按钮,点击实现触发事件

    ''' .isChecked(): 该方法返回控件是否被选中,返回类型为 布尔值 '''
    def __init__(self):
    '''按钮绑定方法'''
        self.ui.pushButton1.clicked.connect(self.Eat_Apple)
        self.ui.pushButton2.clicked.connect(self.Eat_Banana)
        self.ui.pushButton3.clicked.connect(self.Eat_Pear)
    
    def Eat_Apple(self):
        if self.ui.checkBox_apple.isChecked() == True:
       		print("我喜欢吃苹果")
       	
    def Eat_Banana(self):
        if self.ui.checkBox_banana.isChecked() == True:
       		print("我喜欢吃香蕉")
       	
    def Eat_Pear(self):
        if self.ui.checkBox_pear.isChecked() == True:
       		print("我喜欢吃梨子")
    

十、Radio Button:单选按钮

在这里插入图片描述

  • 1、按钮被选中,触发事件:
    '''定义一个全选按钮的方法'''       
    # isChecked():判断按钮是否为选中,返回True则为选中,传入False则为取消选中
    if self.radioButton isChecked() == True:
    	print("按钮被选中了")
    elseprint("按钮未被选中")
    

十一、ProgressBar:进度条展示

在这里插入图片描述

  • 源码放上,复制粘贴到PyCharm,右键运行即可:

    # 导入所需控件模块
    from PySide2.QtWidgets import QApplication
    from PySide2.QtUiTools import QUiLoader
    from PySide2.QtCore import QFile
    from time import sleep
    import os
    
    class Stats():
    
        def __init__(self):
            # 从文件中加载UI定义
            qfile_stats = QFile(r'D:\你的ui文件名路径.ui')
            qfile_stats.open(QFile.ReadOnly)
            qfile_stats.close()
            self.ui = QUiLoader().load(r'D:\你的ui文件名路径.ui')
            # 进度条步骤个数设置,如:我设置四个步骤:[0%,25%,50%,75%,100%]
            self.ui.progressBar.setRange(0,4)
            # 按钮点击怎么触发事件呢?加一段 clicked 代码,调用事件方法
            self.ui.pushButton.clicked.connect(self.use_progressBar)
            self.ui.progressBar.setValue(0)
    
        # 写一个方法,打印进度对应的文本
        def use_progressBar(self):
            # 重置倒退进度条的进度
            self.ui.progressBar.reset()
            # 当代码执行至此,进读条为:0%
            self.ui.textBrowser.append("此时进度为0%")
            # setValue(0):表示完成了 0/4
            self.ui.progressBar.setValue(0)
            # 睡眠一秒,方便看到进度条加载样式
            sleep(1)
    
            # 当代码执行至此,进读条为:25%
            self.ui.textBrowser.append("此时进度为25%")
            # setValue(1):表示完成了 2/4
            self.ui.progressBar.setValue(1)
            # 睡眠一秒,方便看到进度条加载样式
            sleep(1)
    
            # 当代码执行至此,进读条为:50%
            self.ui.textBrowser.append("此时进度为50%")
            # setValue(2):表示完成了 2/4
            self.ui.progressBar.setValue(2)
            # 睡眠一秒,方便看到进度条加载样式
            sleep(1)
    
            # 当代码执行至此,进读条为:75%
            self.ui.textBrowser.append("此时进度为75%")
            # setValue(3):表示完成了 3/4
            self.ui.progressBar.setValue(3)
            # 睡眠一秒,方便看到进度条加载样式
            sleep(1)
    
            # 当代码执行至此,进读条为:100%
            self.ui.textBrowser.append("此时进度为100%")
            # setValue(4):表示全部完成了 4/4
            self.ui.progressBar.setValue(4)
            # 睡眠一秒,方便看到进度条加载样式
            sleep(1)
    
    
    if __name__ == '__main__':
        # 创建一个实例化对象,QApplication 提供了整个图形界面程序的底层管理功能
        app = QApplication([])
        # 创建一个实例化对象,接受定义的所有参数配置
        stats = Stats()
        # 展示窗口及其所有的控件
        stats.ui.show()
        # 进入事件处理循环(没有此段代码,窗口将会一闪而过)
        app.exec_()
    

十二、文件选择器

  • 1、准备好一个按钮 pushButton,绑定打开文件夹方法
    from PySide2.QtWidgets import QFileDialog
    
    def __init__(self):
        self.pushButton.clicked.connect(self.open_fileManager)
    
    '''点击触发打开文件的事件'''
    def open_fileManager(self):
        filePath, _ = QFileDialog.getOpenFileName(
            self.ui,  # 父窗口对象
            "选择你要上传的文件",  # 标题
            r"d:\\",  # 起始目录
            "json类型 (*.xls *.xlsx *.png *.jpg *.doc *.docx)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.ui.lineEdit.setText(filePath)
    
  • 2、实现如图所示的功能: 在这里插入图片描述

十三、Pyinstaller:将.py文件打包成可执行的.exe程序

  • 1、安装 PyInstaller:pip3 install pyinstaller

  • 2、 进入文件所在目录的 CMD 窗口 或者打开 .py文件的终端 Terminal,并执行:
    pyinstaller --noconsole --workpath d:\dist --distpath d:\build -F --hidden-import PySide2.QtXml demo.py

    参数 【建议按照顺序拼接参数】功能释义
    - - noconsole去掉执行.exe 程序时出现的控制台窗口(就是俗称的DOS黑窗口)
    - - workpath指定了制作过程中临时文件的存放目录
    - - distpath指定了最终的可执行文件目录所在的父目录
    - F打包成一个 .exe 文件【文件只有一个,文件较大】
    - - icon自定义打包出来的exe文件图标:自定义ico图片,转换地址
    - - hidden-import PySide2.QtXml参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐