我现在的开发环境是:deepin(linux)+ python3(PyQt5)+Qt-Designer(linux板)
当然,因为python是脚本语言,在windows下也可以运行,只要正确安装了python的PyQt5模块就可以。
就本教程而已,我将以以上的开发环境进行介绍,包括代码框架,shell脚本使用。有写操作可能会因为环境不一致而有一点差异,但是既然你了解linux,我觉得你是可以解决的。
Linux版本:
进入python互交界面,查看是否已经已经安装PyQt5第三方模块,如下未报错,则说明已经安装:
如果import PyQt5报模块找不到,则说明未安装,则在linux下需要使用如下命令安装:
pip install PyQt5
顺便安装serial模块:
pip install pyserial
在命令行模式下输入designer,是否跳出一个Qt设计师的软件,如下图,则说明linux下已经安装。
如果没有,使用如下命令安装:
sudo apt-get install qt-designer
或者从qt官网下载安装包进行安装。
工具都安装好了之后,需要使用pyuic(depin下是pyuic5命令,所以如果直接clone了github代码的同学使用脚本编译ui文件时报错,就有可能是这个原因)将ui文件变成python文件。实际上生产的python文件是一个类,只是把一个ui文件,根据特定的转换规则转成python文件,供PyQt5模块识别和调用。
调用命令:
pyuic ui文件.ui -o 目标文件.py
根据以上步骤完成环境的搭建,这里使用一个demo来验证环境是否正确。
使用qt-designer创建一个简单的ui文件
在命令行上输入:designer
拖了3个控件,并且更换了变量名称,后面使用pyuic命令转换成python文件,类中的变量就是这个。
另存为demo.ui
使用pyuic(depin系统是pyuic5)命令将demo.ui装换成demo.py文件
再在demo文件夹处创建一个main.py文件,作为入口函数:
import sys
from PyQt5.QtWidgets import *
from demo import Ui_MainWindow
if __name__ == "__main__":
app =QApplication(sys.argv)
form=QMainWindow()
myapp=Ui_MainWindow()
myapp.setupUi(form)
form.show()
app.exec_()
运行效果:
demo.py代码:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'demo.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(470, 259)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(190, 30, 61, 31))
self.label.setObjectName("label")
self.PB_test_1 = QtWidgets.QPushButton(self.centralwidget)
self.PB_test_1.setGeometry(QtCore.QRect(100, 140, 80, 26))
self.PB_test_1.setObjectName("PB_test_1")
self.PB_test_2 = QtWidgets.QPushButton(self.centralwidget)
self.PB_test_2.setGeometry(QtCore.QRect(270, 140, 80, 26))
self.PB_test_2.setObjectName("PB_test_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 470, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Demo"))
self.PB_test_1.setText(_translate("MainWindow", "Test_1"))
self.PB_test_2.setText(_translate("MainWindow", "Test_2"))
至此,说明环境已经搭建好,剩下就需要了解PyQt5的一些模块函数,可以参考官网api文档。
【Python-BaseSerialPortTool】- 3. BaseSerialPortTool二次及增量开发介绍
【Python-BaseSerialPortTool】- 4. BaseSerialPortTool项目使用pyinstaller打包成exe可执行文件