python PyQt5的学习

一、安装与配置

1、环境:

python3.7+

2、相关模块

复制代码
pip install pyqt5 pyqt5-tools pyqt5designer

可以加个镜像

复制代码
-i https://pypi.tuna.tsinghua.edu.cn/simple

3、配置设计器

python的pyqt5提供了一个设计器,便于ui的设计

界面是这样的:

只需要在这个设计器中将控件移动到窗口中即可。

常用的控件有:

pushButton:点击按钮

listWidget:显示多行文字

graphicsWidget:显示图片

lineEdit:单行文字

label:标签

以下为具体配置过程:

(1)在pycharm中点击设置(settings):

(2)找到External Tools扩展工具

添加两个功能

Qt Designer :它的功能是打开设计器

program:选择:

working directory:功能是将设计器生成的ui文件转换成py文件

复制代码
$ProjectFileDir$

Pyuic

program选择:

working directory:

复制代码
$ProjectFileDir$

完成以后:

注意:项目文件的路径中不要出现中文,否则会报错

二、设计ui的思路

我个人设计ui时偏好通过main.py启动主页面(ui.py)进入其他的功能页面

如:

框架为:

------main.py:启动代码

------ui.py(ui.ui使用Pyuic转换而来):主页面

------music.py ,data.py,crawl.py,text.py(相应的.ui文件转换而来):功能页面

------sheet(文件夹):存放美化设计的图片:

eg:

以及背景、字体等:

三、代码编写

由于ui.py和其他功能代码文件都可以通过设计器来设计并转换成py文件,所以只需要保证拖放美观即可,并没有难度,关键在于实现逻辑的主代码main.py部分

1、导入包

QtGui,QtCore,QtWidgets中含有pyqt5库中重要控件的函数引入等。

然后我分别从ui中引入了MainWindow的类

2、初始化

main.py中调用页面时需要重新初始化,每个都要

格式为:

复制代码
class MainWindow1(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow1, self).__init__(parent)
        self.ui = Ui_MainWindow1()
        self.ui.setupUi(self)

3、添加逻辑

在初始化后直接添加代码核心的逻辑

4、主函数启动

复制代码
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    mainwindow = MainWindow1()
    mainwindow.show()
    sys.exit(app.exec_())

四、几个常用功能

pyqt5的函数非常多,不可能全部用到,这里分享几个我在ui设计中常用到的几个

1、打开窗口

在初始化的后面加上

复制代码
 self.ui.pushButton1.clicked.connect(self.open_2)

然后在类中定义一个函数

复制代码
    def open_2(self):
        self.st2=MainWindow2(self)
        self.st2.show()

即当点击按钮时可打开另一个界面

注意!!!这里pushButton的命名要记清,这里是pushButton1

2、返回主界面

这里不能用打开主界面的方式来返回,因为主界面是其他功能界面的父界面

复制代码
self.ui.pushButton2.clicked.connect(self.back)  
   def back(self):
        self.close()  # 关闭当前窗口
        self.parent().show()  # 显示主窗口

3、选择文件夹

以选择图像文件为例,如有其他文件,只需在getOpenFileName中改文件后缀即可

复制代码
self.ui.toolButton1.clicked.connect(self.bind_list)
    def bind_list(self):
        file_path, _ = QFileDialog.getOpenFileName(None, "选择图像", os.getcwd(), "图像文件 (*.png *.jpg *.bmp)")
        self.current_image_path = file_path  # 保存选定的文件路径
        if file_path:
            self.show_image(file_path)

看下效果

点击后:

4、美化

直接在初始化后添加:

可以增加窗口图标和按键图标

复制代码
#可视化
        icon = QIcon('sheet/click.png')
        self.ui.pushButton1.setIcon(icon)
        self.ui.pushButton2.setIcon(icon)
        self.ui.pushButton3.setIcon(icon)
        # 设置窗口图标
        Qicon = QIcon('sheet/img2.png')  # 替换为你的图标文件路径
        self.setWindowIcon(Qicon)

另外给大家分享一个ui设计中的图标网站ui设计图标,里面的资源很丰富,好看精简。

五、总结

其实python ui设计的难度并不高,要设计出一个简易的框架很容易,而pyqt5的实际最广泛的用途是与一些功能相结合,比如代码复现时通过点击按钮能够实现运行某个启动代码,在这个过程中需要用到的就是subprocess这个库,还有环境配置的很多问题,核心问题比如信号与槽的使用,我后续会在专栏中更新一些设计实例,大家可以订阅专栏内容来具体学习如何解决一些问题。

相关推荐
superxxd1 小时前
跨平台音频IO处理库libsoundio实践
开发语言·qt·音视频
ajassi20002 小时前
开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
c++·qt·开源
Bellafu6663 小时前
selenium常用的等待有哪些?
python·selenium·测试工具
小白学大数据4 小时前
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
爬虫·python·ajax
谷歌开发者4 小时前
Web 开发指向标 | Chrome 开发者工具学习资源 (一)
前端·chrome·学习
2401_841495645 小时前
【计算机视觉】基于复杂环境下的车牌识别
人工智能·python·算法·计算机视觉·去噪·车牌识别·字符识别
Adorable老犀牛5 小时前
阿里云-ECS实例信息统计并发送统计报告到企业微信
python·阿里云·云计算·企业微信
倔强青铜三5 小时前
苦练Python第66天:文件操作终极武器!shutil模块完全指南
人工智能·python·面试
倔强青铜三5 小时前
苦练Python第65天:CPU密集型任务救星!多进程multiprocessing模块实战解析,攻破GIL限制!
人工智能·python·面试
Panda__Panda5 小时前
docker项目打包演示项目(数字排序服务)
运维·javascript·python·docker·容器·c#