入门 PyQt6 看过来(基础)01 ~ pyqt6初体验

本文路老师准备去玩玩pyqt6的功能,我会用大概二十天的时间玩转pyqt6,并制作出来好玩又实用的项目。


 1 介绍

PyQt6是由Riverbank Computing公司开发的基于Python的一系列多平台的工具包,可以在UNIX、Windows和mac等主流操作系统上运行。本文着重来尝试使用pyqt6,以及未来利用pyqt6来实现一些有意思的桌面应用。比如开发画图板,截图工具,视频音频播放器,以及利用PyQt6来进行科学研究结果的展示。

2 安装PyQt6

安装PyQt6之前需要保证你已经安装了python环境,然后利用python包管理工具pip进行安装pyqt6:

pip install pyqt6

PyQt6设计图形界面程序有两种基本方式。

  1. 在PyQt6安装后,采用Python自带或者第三方提供的IDLE开发PyQt6的程序。
  2. 在PyQt6安装后,再安装配套的工具包QtTools,通过其包含的Qt Designer可视化工具设计功能界面形成UI文件,将其转换为py文件,再编译实现功能的代码,与界面程序一起配合运行,或者直接修改UI文件,转换为py文件,加入实现功能的代码。(我们开发推荐使用这一种)

首先我们先尝试直接利用第一种方式编写程序来实现一个计算圆面积和周长的程序。效果如下:

下面是实现代码

import math
import sys

from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtWidgets import QWidget, QApplication


class Ui_Form(QWidget):
    def __init__(self):
        super(Ui_Form, self).__init__()
        self.setupUi(self)
	#UI界面
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(348, 349)
        self.label = QtWidgets.QLabel(parent=Form)
        self.label.setGeometry(QtCore.QRect(80, 90, 53, 15))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(parent=Form)
        self.label_2.setGeometry(QtCore.QRect(80, 140, 53, 15))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(parent=Form)
        self.label_3.setGeometry(QtCore.QRect(80, 200, 53, 15))
        self.label_3.setObjectName("label_3")
        self.leRadius = QtWidgets.QLineEdit(parent=Form)
        self.leRadius.setGeometry(QtCore.QRect(130, 90, 113, 21))
        self.leRadius.setObjectName("leRadius")
        self.leLength = QtWidgets.QLineEdit(parent=Form)
        self.leLength.setGeometry(QtCore.QRect(130, 140, 113, 21))
        self.leLength.setObjectName("leLength")
        self.leLength.setReadOnly(True)
        self.leLength.setStyleSheet("background-color:#c3c3c3")
        self.leArea = QtWidgets.QLineEdit(parent=Form)
        self.leArea.setGeometry(QtCore.QRect(130, 190, 113, 21))
        self.leArea.setObjectName("leArea")
        self.leArea.setReadOnly(True)
        self.leArea.setStyleSheet("background-color:#c3c3c3")
        self.pushButton = QtWidgets.QPushButton(parent=Form)
        self.pushButton.setGeometry(QtCore.QRect(130, 270, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.calCircle)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "计算圆的面积"))
        self.label.setText(_translate("Form", "半径:"))
        self.label_2.setText(_translate("Form", "周长:"))
        self.label_3.setText(_translate("Form", "面积:"))
        self.pushButton.setText(_translate("Form", "计 算"))
	#计算元的面积和周长
    def calCircle(self):
        r = int(self.leRadius.text())
        if r > 0:
            length = round(2 * math.pi * r, 2)
            area = round(math.pi * r * r, 2)
            self.leLength.setText(str(length))
            self.leArea.setText(str(area))

main方法在py文件末尾添加,使其可以运行。 

#添加main方法,运行程序
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = Ui_Form()
    ui.show()
    sys.exit(app.exec())

3 pyqt6-tools 安装

我们采用第二种方式来设计就会简单很多,不用一个按钮一个按钮的通过代码实现了。首先安装pyqt6-tools工具。

pip install pyqt6-tools

pyqt6-tools里包含两个关键工具:1.设计器Qt Designer;2.文件转换工具。

设计器Qt Designer

 

QtDesigner 是用来设计PyQt6程序界面的工具,它的启动文件是designer.exe,默认位于  用户计算机python安装目录qt6_application\Qt\bin\路径下。

文件转换工具PyUIC

用设计器Qt Designer设计好的界面保存为UI文件,需要通过PyUic将其转化成python源文件才能使用。

 Pyuic转换ui文件为py文件的转换方式如下:

Pyuic6 -o 界面文件名.py 界面文件名.ui

4 Qt Designer界面

Qt designer设计器页面如下,左侧为窗口部件盒,中间为设计区,右侧为对象检查器、属性编辑器、资源浏览器等子窗口。

设计圆周长面积计算的界面如上图,我们只需要拖拽输入框和label标签以及计算按钮就可以实现页面的设计。 

内容描述
半径(文字部分)QLabel半径文字,周长面积文字都类似
半径输入框QLineEdit半径文字后面的输入框,输入框一般都是使用QLineEdit
计算QPushButton计算按钮

 其内容如下:

我们需要通过PyUic进行转换,转换后的是这样的:

其代码内容如下(不要求会写): 

# Form implementation generated from reading ui file '计算圆的周长面积.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(348, 349)
        self.label = QtWidgets.QLabel(parent=Form)
        self.label.setGeometry(QtCore.QRect(80, 90, 53, 15))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(parent=Form)
        self.label_2.setGeometry(QtCore.QRect(80, 140, 53, 15))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(parent=Form)
        self.label_3.setGeometry(QtCore.QRect(80, 200, 53, 15))
        self.label_3.setObjectName("label_3")
        self.leRadius = QtWidgets.QLineEdit(parent=Form)
        self.leRadius.setGeometry(QtCore.QRect(130, 90, 113, 21))
        self.leRadius.setObjectName("leRadius")
        self.leLength = QtWidgets.QLineEdit(parent=Form)
        self.leLength.setEnabled(False)
        self.leLength.setGeometry(QtCore.QRect(130, 140, 113, 21))
        self.leLength.setObjectName("leLength")
        self.leArea = QtWidgets.QLineEdit(parent=Form)
        self.leArea.setEnabled(False)
        self.leArea.setGeometry(QtCore.QRect(130, 190, 113, 21))
        self.leArea.setObjectName("leArea")
        self.pushButton = QtWidgets.QPushButton(parent=Form)
        self.pushButton.setGeometry(QtCore.QRect(130, 270, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "计算圆的面积"))
        self.label.setText(_translate("Form", "半径:"))
        self.label_2.setText(_translate("Form", "周长:"))
        self.label_3.setText(_translate("Form", "面积:"))
        self.pushButton.setText(_translate("Form", "计 算"))

然后,我们可以直接在这里添加main函数(注意和上面的main不一样),实现运行效果:

#添加main方法,运行程序
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = uic.loadUi("./计算圆的周长面积.ui")
    ui.show()
    sys.exit(app.exec())

5 Pyinstaller打包工具安装使用

之后添加相应的功能实现,就可以利用PyInstaller进行打包了,我们先安装PyInstaller

pip install pyinstaller

 我们利用PyInstaller进行打包:

成功打包程exe文件: 

双击运行如下:

 下一篇:PyQt6 在PyCharm工具中的配置


大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。

另外,自己创建的一个技术qq群,玩转技术群,目前手头里有一批项目,前后端人员都需要,兼职,有技术的你欢迎加入,一起学习成长。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路卿老师

大哥大姐给点吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值