一、环境的搭建

1.安装pycharm-professional-2019.1.2.exe2.打开PyCharm

python pyqt5开发 pyqt5 pycharm_Qt


3.打开“File”->“Settings…”

python pyqt5开发 pyqt5 pycharm_PyQt5_02


4.设置工程Interpreter,首先要配置编译器,参照

l

然后主要安装好PyQt5,PyQt5-tools,PyInstaller包

python pyqt5开发 pyqt5 pycharm_界面与逻辑分离_03


5.进入设置Tools>External Tools,进行添加“Qt Desgner”和“PyUIC”

python pyqt5开发 pyqt5 pycharm_界面与逻辑分离_04

注:Qt Desgner功能是进行GUI界面的设计,PyUIC功能是将“.ui”格式的文件转换成“.py”格式的文件。

6.Qt Desgner功能添加如下图所示:

python pyqt5开发 pyqt5 pycharm_界面与逻辑分离_05


7.PyUIC功能添加如下图所示:

python pyqt5开发 pyqt5 pycharm_Qt_06


python pyqt5开发 pyqt5 pycharm_PyQt5_07


上面Arguments的内容如下:

-m
PyQt5.uic.pyuic
$FileName$
-o
$FileNameWithoutExtension$.py

8.环境搭建完成。

二、设置GUI界面

1.打开“Tools”->“External Tools”->“Qt Desgner”,如下图所示:

python pyqt5开发 pyqt5 pycharm_界面与逻辑分离_08


2.进行界面编辑,任意发挥~~,这里只加入了按键,如下图所示:

python pyqt5开发 pyqt5 pycharm_PyQt5_09


然后在上图的左下方加入了信号与槽,发送者是:pushButton(),信号为clicked(),接收者是:Form,槽为slotmessinfo(),设置好之后点击保存,文件名为“message.ui”。

3.在pycharm工程目录下找到message.ui文件,右键选中“External Tools”->“PyUIC”即可将ui格式的文件转换成py格式的文件,如下图所示:

python pyqt5开发 pyqt5 pycharm_python pyqt5开发_10


三、逻辑与界面分离例程

1.打开message.py,这个文件是界面部分,代码如下所示:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(259, 187)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(10, 10, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        self.pushButton.clicked.connect(Form.slotmessinfo)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "你好"))

如下图所示:

python pyqt5开发 pyqt5 pycharm_Qt_11


2.新建一个python文件,这个文件是逻辑处理部分,命名为“firstwindow.py”,如下图所示:

python pyqt5开发 pyqt5 pycharm_Qt_12


3.在此文件中加入如下代码:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from message import Ui_Form
from PyQt5.QtWidgets import QMessageBox

class mymainwindow(QMainWindow,Ui_Form):
    def __init__(self,parent=None):
        super(mymainwindow, self).__init__(parent)
        self.setupUi(self)

    #@pyqtSlot(int)
    def slotmessinfo(self):
        seq=QMessageBox.information(self,"信息提示框","logic",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        if seq==QMessageBox.Yes:
            print(u"正确")
        else:
            print(u"错误")
        #print("123456")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = mymainwindow()
    #ui = Ui_Form()
    #ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

其中

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = mymainwindow()
    #ui = Ui_Form()
    #ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

这部分是显示界面窗口的一般情况下不用动;
其中

class mymainwindow(QMainWindow,Ui_Form):
    def __init__(self,parent=None):
        super(mymainwindow, self).__init__(parent)
        self.setupUi(self)

    #@pyqtSlot(int)
    def slotmessinfo(self):
        seq=QMessageBox.information(self,"信息提示框","logic",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        if seq==QMessageBox.Yes:
            print(u"正确")
        else:
            print(u"错误")
        #print("123456")

这部分是主窗口类,里面定义了一个槽函数,用来弹出"信息提示框"(可自定义一些内容)。这个文件可以用来实现一些功能函数。

4.这就实现了逻辑与界面分离的例程

四、运行结果

点击“run”,结果如下所示:

python pyqt5开发 pyqt5 pycharm_PyQt5_13