Win10 搭建Python3 + PyQt5 + PyCharm 开发环境 超详细图解 无坑(三)

目录

前言

目的

PyCharm+PyUic快捷菜单工具配置(高级)---分离界面和逻辑

代码实例

总目录


前言

前面的内容我们介绍了利用PyCharm+QtDesigner来设计界面,再通过pyuic5将.ui文件转换成.py源文件。由于要响应事件操作,通常会将相应的槽函数写在ui对应.py文件里如此一来,界面和逻辑开发就混合在一起了每一次ui更新都需要修改.py文件软件开发效率低下。本文介绍如何配置PyCharm+PyUic、分离界面和逻辑以及实例代码演示。

​​​​​​​目的

后续ui更新,只要将.ui文件替换,然后转换成_ui.py逻辑部分就不用动,从而实现界面设计与逻辑开发分离。

关于信号和槽的解释可以参考我的另外一篇文章--《C++ Qt与PyQt5 信号与槽 对比说明》

​​​​​​​PyCharm+PyUic快捷菜单工具配置(高级)---分离界面和逻辑

Qt的UI文件转换成.py文件的工具

Description: convert .ui to .py

Program: C:\Python\Scripts\pyuic5.exe(在自己Python安装目录下找一下) 
Arguments: 

原来的参数: $FileName$ -o $FileNameWithoutExtension$.py

更新后的参数:  $FileName$ -o $FileNameWithoutExtension$_ui.py
Working directory: $FileDir$(可以拷贝我的设定,或者点击按钮“Insert macro…” 选择合适的macros)

配图说明请参考《Win10 搭建Python3 + PyQt5 + PyCharm 开发环境 (二)》之“PyCharm+PyUic快捷菜单工具配置”

代码实例

  1. 先用QtDesigner设计一个ui,采用默认的名字“MainWindow”。Win10 搭建Python3 + PyQt5 + PyCharm 开发环境 超详细图解 无坑(三)_第1张图片
  2. 添加一个菜单File,然后在菜单File下面添加几个选项,如下表,修改它们对应的objectName(一定要改,否则后面使用的时候会报错)

    Action

    objectName

    Exit

    exitAction

    Copy

    copyAction

    Paste

    pasteAction

    Cut

    cutAction

  3. 然后用我们配置好的pyuic tool来生成mainwindow_ui.py(自己在cmd控制台输指令也可以“pyuic5 mainwindow.ui -o mainwindow_ui.py ”)
  4. 在项目工程下新增一个mainwindow.py。注意:不带_ui,这个是我们逻辑处理的地方,主要是槽函数。然后将如下代码复制进去。
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    import sys
    from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox
    
    from mainwindow_ui import *   # module mainwindow_ui.py
    
    
    class MainWindow(QMainWindow, Ui_MainWindow):
        def __init__(self, parent=None):
            super(MainWindow, self).__init__(parent)
            self.setupUi(self)
    
            self.exitAction.triggered.connect(self.onExitTriggered)
            self.copyAction.triggered.connect(self.onCopyTriggered)
            self.pasteAction.triggered.connect(self.onPasteTriggered)
            self.cutAction.triggered.connect(self.onCutTriggered)
    
        def onExitTriggered(self):
            QMessageBox.information(self, "Information", "Exit action triggered")
            pass
    
        def onCopyTriggered(self):
            QMessageBox.information(self, "Information", "Copy action triggered")
            pass
    
        def onPasteTriggered(self):
            QMessageBox.information(self, "Information", "Paste action triggered")
            pass
    
        def onCutTriggered(self):
            QMessageBox.information(self, "Information", "Cut action triggered")
            pass
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        mainWindow = MainWindow()
        mainWindow.show()
        sys.exit(app.exec_())

     

  5. 最后,右击执行Run

​​​​​​​​​​​​​​Win10 搭建Python3 + PyQt5 + PyCharm 开发环境 超详细图解 无坑(三)_第2张图片

 

总目录

Win10 搭建Python3 + PyQt5 + PyCharm 开发环境 图解 总目录

你可能感兴趣的:(PyQt5,PyQt5,Qt信号和槽,代码实例)