【Python-BaseSerialPortTool】- 2. PyQt5+qt-designer开发环境搭建

版权声明:欢迎交流 https://blog.csdn.net/sishuihuahua/article/details/86423680

1. 开发环境介绍

我现在的开发环境是:deepin(linux)+ python3(PyQt5)+Qt-Designer(linux板)

当然,因为python是脚本语言,在windows下也可以运行,只要正确安装了python的PyQt5模块就可以。

2. 开发环境搭建

就本教程而已,我将以以上的开发环境进行介绍,包括代码框架,shell脚本使用。有写操作可能会因为环境不一致而有一点差异,但是既然你了解linux,我觉得你是可以解决的。

Linux版本:

2.1 查看是否已经安装python的PyQt5模块

进入python互交界面,查看是否已经已经安装PyQt5第三方模块,如下未报错,则说明已经安装:

如果import PyQt5报模块找不到,则说明未安装,则在linux下需要使用如下命令安装:

pip install PyQt5

 顺便安装serial模块:

pip install pyserial

2.2 查看是否安装qt-designer

在命令行模式下输入designer,是否跳出一个Qt设计师的软件,如下图,则说明linux下已经安装。

如果没有,使用如下命令安装:

sudo apt-get install qt-designer

或者从qt官网下载安装包进行安装。

 

2.3 将.ui文件转换成python代码

工具都安装好了之后,需要使用pyuic(depin下是pyuic5命令,所以如果直接clone了github代码的同学使用脚本编译ui文件时报错,就有可能是这个原因)将ui文件变成python文件。实际上生产的python文件是一个类,只是把一个ui文件,根据特定的转换规则转成python文件,供PyQt5模块识别和调用。

调用命令:

pyuic ui文件.ui  -o 目标文件.py

2.4 例子

根据以上步骤完成环境的搭建,这里使用一个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文档。

猜你喜欢

转载自blog.csdn.net/sishuihuahua/article/details/86423680
今日推荐