一、环境的搭建
1.安装pycharm-professional-2019.1.2.exe2.打开PyCharm
3.打开“File”->“Settings…”
4.设置工程Interpreter,首先要配置编译器,参照
然后主要安装好PyQt5,PyQt5-tools,PyInstaller包
5.进入设置Tools>External Tools,进行添加“Qt Desgner”和“PyUIC”
注:Qt Desgner功能是进行GUI界面的设计,PyUIC功能是将“.ui”格式的文件转换成“.py”格式的文件。
6.Qt Desgner功能添加如下图所示:
7.PyUIC功能添加如下图所示:
上面Arguments的内容如下:
-m
PyQt5.uic.pyuic
$FileName$
-o
$FileNameWithoutExtension$.py
8.环境搭建完成。
二、设置GUI界面
1.打开“Tools”->“External Tools”->“Qt Desgner”,如下图所示:
2.进行界面编辑,任意发挥~~,这里只加入了按键,如下图所示:
然后在上图的左下方加入了信号与槽,发送者是:pushButton(),信号为clicked(),接收者是:Form,槽为slotmessinfo(),设置好之后点击保存,文件名为“message.ui”。
3.在pycharm工程目录下找到message.ui文件,右键选中“External Tools”->“PyUIC”即可将ui格式的文件转换成py格式的文件,如下图所示:
三、逻辑与界面分离例程
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", "你好"))
如下图所示:
2.新建一个python文件,这个文件是逻辑处理部分,命名为“firstwindow.py”,如下图所示:
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”,结果如下所示: