Windows下Pycharm中PyQt5 + QtDesigner + QtUIC 的配置与使用

环境

Windows 10 + pycharm 2022.2 + python 3.9.6

安装

pip install PyQt5 5.15.4
pip install pyqt5-tools 5.15.4.3.2

配置Pycharm External Tool

具体方法:Flie ⇒ \Rightarrow Settings ⇒ \Rightarrow Tools ⇒ \Rightarrow External Tools ⇒ \Rightarrow
请添加图片描述

点击左上角 + 号,配置如下:

  1. 配置QtDesigner
Name :QtDesigner

Program : D:\PythonProgram\learnPy\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
(program填你自己designer.exe的路径)

Arguments : $ProjectFileDir$

Working directory:  $FileDir$
  1. 配置PyUIC
Name :PyUIC

Description: 将Qt Designer生成的界面文件(后缀为.ui)转换成指定的格式

Program :D:\PythonProgram\learnPy\venv\Scripts\pyuic5.exe
(program填你自己pyuic5.exe的路径)

Arguments :$FileName$ -o  $FileNameWithoutExtension$.py

Working directory:  $ProjectFileDir$
  1. 配置PyRCC
Name :PyRCC

Program :D:\PythonProgram\learnPy\venv\Scripts\pyrcc5.exe
(program填你自己pyrcc5.exe的路径)

Arguments :$FileName$ -o $FileNameWithoutExtension$_rc.py

Working directory:  $FileDir$

配置成功后的使用

点击菜单栏 Tools 或者单击鼠标右键

在这里插入图片描述

找到 External Tools 如下:

在这里插入图片描述

单击 QtDesigner:

在这里插入图片描述

出现QtDesigner的界面:

在这里插入图片描述

如果出现以下错误直接点cancel就可以了,不影响后续操作

在这里插入图片描述

设计完成后,Ctrl + S 保存到相应文件夹
在这里插入图片描述

选中你保存的ui文件
在这里插入图片描述

右键点击,之后使用PyUIC将 ui 文件 转换为 py 文件

在这里插入图片描述

PyQt5 的 Hello World (from www.w3schools.cn/pyqt5/pyqt5_hello_world.asp)

使用 PyQt 创建一个简单的 GUI 应用程序涉及以下步骤 −

  • 从 PyQt5 包中导入 QtCore、QtGui 和 QtWidgets 模块。
  • 创建一个QApplication类的应用对象。
  • QWidget 对象创建顶级窗口。 在其中添加 QLabel 对象。
  • 设置label的标题为"hello world"。
  • 通过**setGeometry()**方法定义窗口的大小和位置。
  • 通过**app.exec_()**方法进入应用程序的主循环。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
   app = QApplication(sys.argv)
   w = QWidget()
   b = QLabel(w)
   b.setText("Hello World!")
   w.setGeometry(100,100,200,50)
   b.move(50,20)
   w.setWindowTitle("PyQt5")
   w.show()
   sys.exit(app.exec_())
if __name__ == '__main__':
   window()

也可以开发上述代码的面向对象的解决方案。

  • 从 PyQt5 包中导入 QtCore、QtGui 和 QtWidgets 模块。
  • 创建一个QApplication类的应用对象。
  • 基于QWidget类声明窗口类
  • 添加一个QLabel对象,并将label的标题设置为"hello world"。
  • 通过setGeometry()方法定义窗口的大小和位置。
  • 通过**app.exec_()**方法进入应用程序的主循环。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class window(QWidget):
   def __init__(self, parent = None):
      super(window, self).__init__(parent)
      self.resize(200,50)
      self.setWindowTitle("PyQt5")
      self.label = QLabel(self)
      self.label.setText("Hello World")
      font = QFont()
      font.setFamily("Arial")
      font.setPointSize(16)
      self.label.setFont(font)
      self.label.move(50,20)
def main():
   app = QApplication(sys.argv)
   ex = window()
   ex.show()
   sys.exit(app.exec_())
if __name__ == '__main__':
   main()

前后端分离开发

pyqt加载调用ui界面文件的两种方法

方法一:使用pyuic编译ui文件

这种方法较为常用。

  1. 使用 Qt Designer 绘制窗体界面,保存为.ui文件
  2. 使用 pyuic 工具将 .ui 文件编译成 同名的 .py 文件
  3. 将.py文件的类作为界面类供其他类文件加载
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from maindlg import Ui_Dialog
 
# 注意:ui界面文件是个对话框,那么MyApp就必须继承 QDialog
# 类似的,若ui界面文件是个MainWindow,那么MyApp就必须继承 QMainWindow
class MyApp(QDialog, Ui_Dialog):
    def __init__(self):
        super().__init__()
        self.setupUi(self)    # 设置界面
        self.btn.clicked.connect(self.sayHi)    # 绑定点击信号和槽函数
 
    def sayHi(self):    # click对应的槽函数
        print("hi")
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = MyApp()
    myapp.show()
    sys.exit(app.exec_())
方法二:在代码中使用loadUi直接加载ui文件
from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QApplication
import sys
 
# 注意:ui界面文件是个对话框,那么MyApp就必须继承 QDialog
# 类似的,若ui界面文件是个MainWindow,那么MyApp就必须继承 QMainWindow
class MyApp(QtWidgets.QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi('maindlg.ui', self)
 		# 绑定按钮的点击信号和对应的槽函数
        self.btn.clicked.connect(self.sayHi)    
 	
 	# 槽函数
    def sayHi(self):    
        print("hi")
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = MyApp()
    myapp.show()
    sys.exit(app.exec_())

踩过的坑

  • pyqt5-tools 目前仅支持python 3.9 如果你想使用 QtDesigner 还是多下一个 python 版本吧

  • 配置Pycharm External Tool的时候,要按照PyUIC的相关语法来写,否则会出错(直接复制本文的没有问题)。

  • 配置Pycharm External Tool的路径一定是你自己的下载路径

    • PS: 如果不知道具体路径在哪,可以下载一个Everything来寻找。
  • 如果你在前后端分离开发时导入loadUiType包找不到的提示,那么原因可能是同时安装了PyQt5和PyQt5-stubs,删除PyQt5-stubs即可

  • 如果你出现了关于 import resource_rc 的问题,使用 PyRCC 工具将你的 qrc 资源文件转换为 py 文件

  • Process finished with exit code -1073740791 (0xC0000409) -》显卡内存不足。一般出现问题的情况是:注意看是不是循环里面没有退出,导致一直循环最终内存爆掉。

  • Cannot find reference 'uic' in '__init__.pyi' 可以看作是pycharm的问题,就是代码包写的不规范导致找不到。(但是程序可以正常跑,可以不用管)

参考资料

(139条消息) Python+PyQt5+QtDesigner+PyUic+PyRcc(最全安装教程)_sever默默的博客-CSDN博客_pyrcc

Qt Designer怎样加入资源文件 - nookia - 博客园 (cnblogs.com)

PyCharm+QTDesigner+PyUIC使用教程 - 诸子流 - 博客园 (cnblogs.com)

Qt Designer怎样加入资源文件 - nookia - 博客园 (cnblogs.com)

PyCharm+QTDesigner+PyUIC使用教程 - 诸子流 - 博客园 (cnblogs.com)

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值