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
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.****.net/suxiang198/article/details/52042526
[2]: 另外一位博主写的非常好,关于如何安装python2.7的在知乎上的,但是找不到了…