您现在的位置是:首页 > 技术教程 正文

【Python】pyqt5安装Designer并配置到pycharm,解决报错ImportError: DLL load failed while importing QtCore(保姆级图文)

admin 阅读: 2024-03-24
后台-插件-广告管理-内容页头部广告(手机)

目录

    • 可能遇到的报错解决方法
    • 安装必须要的库
    • 找到你的qt下面的designer工具路径(易错点)
    • 在pycharm中配置
      • 1. QT Designe 快速打开designer.exe或是编辑UI文件
      • 2. PyUIC 将ui文件转为py文件
      • 3. pyrcc 将图片、数据文件资源打包成py文件
    • 工具的测试
      • 工具打开方式
      • 新建一个UI界面
      • 生成界面的py文件
      • 运行我们的py文件
    • 最终呈现效果
    • 总结


欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中

可能遇到的报错解决方法

ImportError: DLL load failed while importing QtCore: 找不到指定的模块

报错解决的省流小助手:出现报错 ImportError: DLL load failed while importing QtCore的原因在于,我之前装过pyside2,那个库里面也有designer.exe工具,我之前配置路径的时候用了pyside2的designer.exe,当然找不到qt的QtCore,修改正确的路径即可。


安装必须要的库

如果你原来安装过然后配置失败,这一步就卸载你原来装的这两个库重新装一遍。

# 卸载 pip uninstallpyqt5 pip uninstallpyqt5-tools # 安装 pip install pyqt5 pip install pyqt5-tools
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述


找到你的qt下面的designer工具路径(易错点)

这里注意,虽然我的python是在E盘路径下的,可能是因为我之前是python路径原来的安装地址是C盘,后来电脑重装,python被我迁移到的E盘,重新配的环境变量,导致了我的site-package(库文件存放文件夹)在C盘。你要找你自己的site文件夹,如果你是python当时安装的时候一直点下一步默认装在C盘的,那么你的情况会和我下面一样,如果你是默认直接装在别的盘,到你的python下面的site-package找。

qt5_applications(你可能会有多个designe.exe在电脑中,别的库比如说pyside2库也会装designer路径选错后面的配置会报错)下面的designer.exe的路径,906687是用户名,改为你自己的。

  • pyside2的designer.exe(错误路径)
    在这里插入图片描述

  • qt5_applications的designer.exe(正确路径)
    在这里插入图片描述

C:\Users\90668\AppData\Roaming\Python\Python38\site-packages\qt5_applications\Qt\bin\designer.exe
  • 1

到此为止,点击这个exe文件你就能打开designer编辑UI界面了
在这里插入图片描述
打开后的界面效果
在这里插入图片描述


在pycharm中配置

打开设置file-setting-tool-external-tool,点击加号添加新工具。(注意你的tool列表应该是没有我图中所示的三个工具的)
在这里插入图片描述

1. QT Designe 快速打开designer.exe或是编辑UI文件

Name–> QT Designer
Program–> C:\Users\90668\AppData\Roaming\Python\Python38\site-packages\qt5_applications\Qt\bin\designer.exe (designer.exe的路径)
Arguments–>
Working directory–> E:\allworkspace\python work space\GUI pyqt5_亚马逊(你的项目路径)

在这里插入图片描述

2. PyUIC 将ui文件转为py文件

Name–> PyUIC
Program–> E:\python\python\python.exe (你的python文件路径)
Arguments–> -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory–> $FileDir$
在这里插入图片描述

3. pyrcc 将图片、数据文件资源打包成py文件

QtDesigner中管理资源文件(图片、数据文件)是通过.qrc文件来管理的。pyQt生成的应用程序,引用图片通常是将资源文件装换为 python 文件,然后引用资源文件,而不能直接加载资源文件。需要通过pyrcc将.qrc文件转化成.py文件。

Name–> pyrcc
Program–> E:\python\python\python.exe (你的python文件路径)
Arguments–> $FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory–> $FileDir$
在这里插入图片描述


工具的测试

工具打开方式

顶部导航栏打开
在这里插入图片描述
右键文件 打开
在这里插入图片描述

新建一个UI界面

建立一个窗体
在这里插入图片描述
拖入控件
在这里插入图片描述
左上角文件另存为保存ui文件
在这里插入图片描述

生成界面的py文件

右键untitled.ui 使用PYUIC后,生成了untitled.py文件
在这里插入图片描述

运行我们的py文件

我们转化后的py文件,直接运行是没有反应的,需要在末尾添加一个入口函数才能运行出Ui界面

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'untitled.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication 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.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QtCore.QRect(210, 150, 160, 80)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.checkBox = QtWidgets.QCheckBox(self.centralwidget) self.checkBox.setGeometry(QtCore.QRect(400, 370, 71, 16)) self.checkBox.setObjectName("checkBox") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) 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.checkBox.setText(_translate("MainWindow", "CheckBox"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

添加了入口函数后的代码

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'untitled.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication 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.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QtCore.QRect(210, 150, 160, 80)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.checkBox = QtWidgets.QCheckBox(self.centralwidget) self.checkBox.setGeometry(QtCore.QRect(400, 370, 71, 16)) self.checkBox.setObjectName("checkBox") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) 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.checkBox.setText(_translate("MainWindow", "CheckBox")) """入口函数""" if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

最终呈现效果

在这里插入图片描述


总结

大家喜欢的话,给个

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜