目录

1、安装pyqt6和pyqt6-tools包

1.1 安装pyqt6和pyqt6-tools

1.2 安装pyqt6和pyqt6-tools注意事项

2、在pycharm中配置pyqt6

2.1 配置designer.exe文件

2.2 配置pyuic工具

3、实例测试

3.1 通过可视化界面来实现(qtDesigner)

3.2 通过代码来实现界面的初始化

3.3 两种开发方法的对比

4、配置中存在的问题

from PyQt6 import QtWidgets。报错ImportError: DLL load failed: 找不到指定的程序

参考资料


1、安装pyqt6和pyqt6-tools包

注意:pyqt6-tools目前仅支持python3.9版本,3.9版本后的安装部成功。(截止2022.11.20)

1.1 安装pyqt6和pyqt6-tools

安装pyqt和pyqt6-tools可以使用conda和pip进行安装

(1)首先创建python环境

#利用conda,创建python环境
conda create --name pyqt_env python=3.9

命令如下:

(2)激活pyqt_env环境

#激活pyqt_env环境
conda activate pyqt_env

(3)安装pyqt6和pyqt6-tools,建议使用pip

pip install pyqt6

当看到successfully是表示安装成功。

在安装成功pyqt6后,安装pyqt6-tools

pip install pyqt6-tools

当看到successfully表示成功,出现红色的部分表示有部分包没有安装成功。

1.2 安装pyqt6和pyqt6-tools注意事项

检验上述两个是否安装成功,可以使用 pip show <包名>的情况来查看

#例如
pip show pyqt6-tools

出现以下信息,也表明安装成功了。

注意:在安装过程中,会遇到包下载不了的情况,我们可以使用国内的镜像地址来下载。

#可以使用临时镜像对python包进行下载
pip install pyqt6-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

镜像地址有很多,除了清华的地址,还有:

阿里云 Simple Indexicon-default.png?t=M85Bhttps://mirrors.aliyun.com/pypi/simple/

豆瓣 Simple Indexicon-default.png?t=M85Bhttps://pypi.douban.com/simple/

清华大学(推荐) Simple Indexicon-default.png?t=M85Bhttps://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学 Simple Indexicon-default.png?t=M85Bhttp://pypi.mirrors.ustc.edu.cn/simple/

……

2、在pycharm中配置pyqt6

在本例的配置中,选择用pycharm的社区版本,2022.2.4版本,最新的pycharm采用了新界面的风格,更轻量化,功能布局更为合理。

2.1 配置designer.exe文件

pyqt开发为我们在python环境中开发提供了可视化界面的编程,配置designer.exe可以方便的进行界面设计和开发。

(1)打开pycharm软件,并新建项目。

pycharm新界面较为简洁

(2)打开设置界面(快捷键Ctrl+Alt+S)

打开设置界面,找到Extenal Tools工具

接下来根据设置界面添加designer.exe文件

修改 Working directory 目录

Working directory 为 $ProjectFileDir$ 对应当前目录

2.2 配置pyuic工具

pyuic工具可以将QtDesigner生成的.ui文件转换为.py文件,相当于通过界面可视化界面设计后,直接将界面文件转化为python代码,这样就极大的提高了代码的编写效率。

紧接上一步骤,点击‘+’号添加pyUIC工具

参数填写

Arguments

$FileName$ -o $FileNameWithoutExtension$.py

Working directory

$ProjectFileDir$

注意:Working directory目录也可以自定义设置
到这里pycharm的配置已经完成。

3、实例测试

可以利用配置好的环境进行简单的界面开发。

3.1 通过可视化界面来实现(qtDesigner)

通过tools--pyqt6--pyqtDesigner可以打开界面设计界面

界面设计可视化界面

选择main window,然后添加一个label,键入“hello world”。

然后保存界面文件为.ui文件,将ui文件保存到和主程序代码相同的路径下。

接下来将.ui文件转化为.py文件,这是可以利用pyUIC工具进行转化

点击pyUIC命令后,程序会将工程内的.ui文件自动转化为.py文件。

UItest.py代码如下,请记住class的名称为Ui_MainWindow

# Form implementation generated from reading ui file 'UItest.ui'
#
# Created by: PyQt6 UI code generator 6.1.0
#
# 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_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(270, 200, 211, 71))
        self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "Hello World"))

此时,产生的是为界面代码并不能直接运行,需要将代码绑定到main函数才能运行。将Ui_MainWindow类的名称绑定到ui关键字,使得ui=Ui_MainWindow().

import sys
from PyQt6 import QtGui,QtWidgets

from UItest import Ui_MainWindow

if __name__ == '__main__':
    app=QtWidgets.QApplication(sys.argv)
    MainWindow=QtWidgets.QMainWindow()
    ui=Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec())

运行上述代码可以得到运行的界面。

3.2 通过代码来实现界面的初始化

通过编写代码也可以实现对pyqt界面的设计,具体代码例子如下:

import sys
from PyQt6.QtWidgets import (QApplication, QWidget,QLabel,QPushButton)
from PyQt6.QtCore import QCoreApplication

# 主窗体
app = QApplication(sys.argv)           # 创建应用对象
mainWindow = QWidget()                 # 构造登陆窗口
mainWindow.setWindowTitle('第一个程序')  # 窗口标题
mainWindow.resize(800, 600)            # 窗口大小

# 密码Label
pass_Label = QLabel(mainWindow)        # 放置在登陆窗口上
pass_Label.setText('你好,世界!!!')    # 设置显示文本
pass_Label.move(350, 280)              # 设置位置

# 退出按钮
exit_Btn = QPushButton('关闭应用程序', mainWindow)
exit_Btn.clicked.connect(QCoreApplication.instance().quit)  # 绑定退出事件
exit_Btn.move(350,350)
mainWindow.show()                      #显示窗体
sys.exit(app.exec())                   #进入消息循环

程序运行效果如图:

3.3 两种开发方法的对比

两种方法没有本质的区别,主要是在效率上的区别

  • 采用代码编写的时候,需要大量的代码来实现界面控件的位置、属性和内容等。
  • 采用Designer来设计界面,可以实现可视化的编程,较为适合从C#.NET开发者等的入门。能够很好的实现业务与设计分离。

4、配置中存在的问题

由于pyqt6和pyqt6-tools两个包不一样,容易导致如下问题

from PyQt6 import QtWidgets。报错ImportError: DLL load failed: 找不到指定的程序

要解决此问题只需要将pyqt6和pyqt6-tools的版本进行统一就可以了。

具体可以这样操作,首先利用

pip list命令查看包的安装列表

从上图可以看出pyqt和pyqt6-tools的版本不一致,可以pyqt6-qt6包卸载,重新安装pyqt6-qt6包为6.1.0版本,既可以解决找不到指定程序的错误。

参考资料

PyCharm中使用PyQt实现UI界面设计 - fengMisaka - 博客园

PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程_思绪无限的博客-CSDN博客

【python】PyQt6和pyqt6-tools在PyCharm2021的详细配置方法_特大辉哥的博客-CSDN博客

Python之pip命令指定安装源和版本_慕城南风的博客-CSDN博客

pyqt6 vscode ImportError: DLL load failed while importing QtGui: 找不到指定的程序。_mengyu822_csdn的博客-CSDN博客

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐