Pycharm+PyQT5/Pyside2开发python图形界面

温馨提示:点击页面下方以展开或折叠目录~

Pycharm+PyQT5/Pyside2开发python图形界面

os:win10

环境:python3.9

工具:pycharm2021

图形化界面库:pyside2或pyqt5

区别:

  • pyside2是python官方库,2018年才有的,目前文档不是特别多
  • pyqt5比较成熟,出现的早,文档比较详细,pyqt5不可闭源商用(必须开源)

相同点:

  • 代码几乎一样,甚至包几乎都是一样的,从pyqt5到pyside2几乎没有学习成本

安装库

  • pyqt5

    pip3 install PyQt5 -i https://pypi.douban.com/simple

    pip3 install PyQt5-tools -i https://pypi.douban.com/simple

  • pyside2

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside2

QtDesigner配置

使用QtDesigner快速制作图形化界面

  • File >> Settings >> Tools >> External Tools >> +

    image

    • Name:随便填
    • Program:designer.exe路径(直接everything搜索designer.exe就可以了)
      • PyQT5一般为../site-packages/pyqt5_tools/designer.exe或者../site-packages/qt5_applications/Qt/bin/designer.exe
      • Pyside2为../site-packages/PySide2/designer.exe
    • Working directory:$FileDir$

PyUic配置

把Qt的.ui文件转为.py文件

  • 继续在External Tools里添加

    image

    • 第一种配置方法
      • Program:python3.exe地址
      • Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
      • Working directory:$FileDir$
    • 第二种配置方法

      • Program:D:\DevelopTools\Python-3.9.5\Scripts\pyuic5.exe
      • Arguments:$FileName$ -o $FileNameWithoutExtension$.py
      • Working directory:$FileDir$
    • 挑一种配就好了,都一样

PyRcc配置

将资源文件转码

  • 配置和pyuic差不多

    image

    • Program:D:\DevelopTools\Python-3.9.5\Scripts\pyrcc5.exe
    • Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
    • Working directory:$FileDir$

QtDesigner使用

到这里就全部配置完成了

image

在Tool中点击即可打开QtDesigner界面

image

设计完成后保存为.ui文件,回到pycharm就可以看到了

image

将.ui文件转为.py文件:右键test.ui >> External Tools >> PyUic

image

点击后即生成对应的test.py文件

image

Python中打开窗口

静态加载

  • 即先转为.py文件,再使用该文件打开窗口

    image

  • 代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow
    import first # module first.py

    if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMainWindow = QMainWindow()
    myUi = first.Ui_MainWindow()
    myUi.setupUi(myMainWindow)
    myMainWindow.show()
    sys.exit(app.exec_())

动态加载

  • 无需转为.py文件,直接导入.ui文件

  • 优点:在QtDesigner设计修改后保存的.ui文件可以直接动态加载出来,不用再转为.py文件

    image

  • 代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from PySide2.QtCore import QFile
    from PySide2.QtWidgets import QApplication
    from PySide2.QtUiTools import QUiLoader

    class Test:

    def __init__(self):
    # 从文件中加载UI定义
    qfile = QFile("ui/test.ui")
    qfile.open(QFile.ReadOnly)
    qfile.close()
    # 从 UI 定义中动态 创建一个相应的窗口对象
    self.ui = QUiLoader().load(qfile)


    app = QApplication([])
    test = Test()
    test.ui.show()
    app.exec_()