Ubuntu16.04 PyQt5.10+Eric6 18.0.5+Python3.5+Sip4.19.8+Qt5.10+QScintilla-2.10.3

Ubuntu16.04 PyQt5.10+Eric6 18.0.5+Python3.5+Sip4.19.8+Qt5.10+QScintilla-2.10.3

最近需要写界面,然后就开始在Ubuntu下安装PyQt5,然后蛋疼的事情就来了,由于ROS目前支持的Python版本为Python2.X,然而目前PyQt5的版本都已经抛弃Python2.x,只支持Python3.x。本着一定要用Python2.7的原则,虽然明明知道可以直接用pip install python-qt5安装一个简单版本的,然后用qtdesigner进行界面设计也是可以的组合,但是本着装一波的原则,我折腾了一下午,全部编译安装好,安装过程简直哭到底,重新装了4-5次最终才装好,其中还把操作系统给搞奔溃,重新安装,蛋疼。(安装过程和python3.x雷同,唯一的区别是安装Eric6这里,你只能安装Eric6.6.1.11或者相近的版本,版本太高了不行)。
本文主要是基于Python3的安装,这个安装就如丝般润滑,非常轻松愉快。

需要的安装包及下载地址地址

Qt5.10 安装

这个比较简单,去Qt这里下载对应的包安装即可。这里我安装的包是:qt-opensource-linux-x64-5.10.0.run,只需要按照如下执行即可。

sudo chmod +x qt-opensource-linux-x64-5.10.0.run
sudo ./qt-opensource-linux-x64-5.10.0.run

Qt5.10相关配置

[1] 写如环境变量

sudo vim ~/.bashrc
export QTDIR=/opt/Qt5.10.0/5.10/gcc_64/ {这里写你安装的目录}
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib
export PATH=${QTDIR}/bin:${PATH}

[2] 配置系统软链接

这一步主要是为了后面使用qmake做准备的,你可以不设置,到时候用绝对路径的qmake也是可以的。

sudo ln -s /opt/Qt5.10.0/5.10/gcc_64/bin/qmake /usr/lib/x86_64-linux-gnu/qt4/bin/qmake

Sip安装

Sip是python调用c/c++接口的枢纽,需要安装这个,直接按照如下步骤安装即可:

sip -V检查版本
    tar -zxvf sip-4.19.8.tar.gz   
    python3 configure.py  
    sudo make  -j8(或者你电脑的核心数)
    sudo make install

QScintilla安装

使用Eric6,还需要安装组件QScintilla2,这是链接编译器和Python的接口,我们需要分别安装三个模块:Qt4Qt5,designer-Qt4Qt5,Python.注意由于后面两个模块需要用到PyQt5为了避免出错,安装完PyQt5再来安装。
[1] install Qt4Qt5

cd Qt4Qt5  
qmake qscintilla.pro  
sudo make  -j8
sudo make install

[2] install designer-Qt4Qt5

cd QScintilla-gpl-2.10.3/designer-Qt4Qt5  
qmake designer.pro   
sudo make  -j8
sudo make install

[3] install Python

cd QScintilla-gpl-2.10.3/Python  
python3 configure.py --pyqt=PyQt5  
sudo make  -j8
sudo make install

PyQt5安装

这个编译安装可能会需要很长时间根据电脑的性能来看。

tar -zxvf PyQt-gpl-5.10.0.tar.gz  
cd PyQt-gpl-5.10.0
python3 configure.py
sudo make -j8
sudo make install

安装Eric6

最后安装Eric6和配置。

tar -zxvf eric6-18.0.5.tar.gz
sudo python3 install.py

这里打开Eric6,需要使用sudo eric6,或者你可以把你的home目录全部设置一下当前用户权限,也可以,不然使用过程中会权限问题。
[1]首先设置APis
在这里插入图片描述
[2] 设置自动补全在这里插入图片描述
[3]设置QTdesigner
由于这里windows下可以直接链接起来,Linux暂时链接不了,可以不设置,后面设置好保存ui文件路径也可以。
在这里插入图片描述

测试使用

[1] 使用QtDesigner 随便设计一个界面,这里随便添加了一个控件。

命令行输入:designer

在这里插入图片描述
[2] 保存并通过Eric6打开,右键编译
在这里插入图片描述
[3] 打开刚刚自动生成的文件,可以看到代码如下
当然你可以直接拷贝到自己的IDE进行运行,如Pycharm

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '/data/ros/QtGui/Test/untitled.ui'
#
# Created by: PyQt5 UI code generator 5.10
#
# 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(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(330, 230, 67, 17))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(270, 260, 261, 31))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        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", "TextLabel"))
        self.pushButton.setText(_translate("MainWindow", "Thank You For Reading My Blog"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

运行效果后如下:
在这里插入图片描述

参考文献

感谢以下几位博主的辛苦付出:
[1]: https://blog.csdn.net/suxiang198/article/details/52042526 [2]: 另外一位博主写的非常好,关于如何安装python2.7的在知乎上的,但是找不到了…