Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台

分类: Linux Ubuntu Oracle 2014-10-14 14:49 3613人阅读 评论(13) 收藏 举报

目录(?)[+] html

引言

找 了不少Python GUI工具集,仍是以为PyQt比较理想,功能强大跨平台,还支持界面设计器。花一天时间折腾了Ubuntu14.04(32位)+ Python3.4 + Qt5.3.2 + PyQt5.3.2 + Eric6.0 的完整开发平台的搭建,各类出错差点放弃了,好在终于一一解决了,记录下来之后搭建起来方便点。    python

安装Python3.4

Ubuntu14.04貌似默认安装了Python2.7 和Python3.4。故Python3.4的安装可略去。 linux

安装Qt5

Ubuntu14.04自带Qt4的部分库文件,可是咱们的平台要求Qt5,因此首先安装Qt5. 小程序

Qt5.3.2下载:http://qt-project.org/downloads

安装过程:

下载到的是Qt5的在线安装程序,为其赋予可执行权限便可单击启动。因为我以前文件都安装在/opt目录下,故这里以root身份安装: api

  1. sudo chmod a+x qt-opensource-linux-x86-1.6.0-5-online.run   
  2. sudo ./qt-opensource-linux-x86-1.6.0-5-online.run  

启动界面后默认安装便可。 bash


配置过程:

安装完成后配置一下PATH,在当前用户主目录下的.bashrc (or .zshrc)文件中加入: app

  1. export QTDIR=/opt/Qt/5.3/gcc/  
  2.   
  3. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib  
  4.   
  5. export PATH=${QTDIR}/bin:${PATH}  

  注意${QTDIR}/bin和${PATH}的顺序!由于Ubuntu14.04默认${PATH}路径中的/usr/bin下存在诸多qt命令(确切 的说是指向qtchooser的软链接,qtchooser最终会选择系统自带的Qt4命令:可是这些命令默认都不存在),若是${QTDIR}/bin 在${PATH}以后,会致使Qt命令失效。 编辑器

特别是qmake命令,在后续安装中须要用到,保险起见,在终端输入qmake,若是显示qmake命令不存在,请经过建立软链接进行解决: ide

将/usr/bin下的qmake软链接到/opt/Qt/5.3/gcc/bin/qmake上,或者将/usr/lib/i386-linux-gnu/qt4/bin/qmake软链接到/opt/Qt/5.3/gcc/bin/qmake上: 函数

  1. sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/bin/qmake  
  2. or  
  3. sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/lib/i386-linux-gnu/qt4/bin/qmake  

此时再输入qmake查看是否设置成功。

安装SIP

SIP 是python调用C/C++库的必备模块。所以SIP是PyQt的依赖工具,安装PyQt以前必须先安装对应版本的SIP。PyQt编译时使用的SIP 版本必须与python默认调用的SIP保持一致!不然python中是没法调用PyQt的。这里咱们使用最新的SIP 4.16.3.

Ubuntu14.04中貌似是自带4.15版的SIP(or 本身安装python扩展是自动安装的)。终端输入:

  1. sip -V  

查看已安装SIP版本,若是存在其余版本,请查看python3的dist-packages目录下是否存在sip相关文件。若是存在将其删除:

  1. sudo -rm /usr/lib/python3/dist-packages/sip*  

而后正式安装SIP 4.16.3。

SIP 4.16.3下载:http://www.riverbankcomputing.com/software/sip/download

安装过程:

  1. tar -zxvf sip-4.16.3.tar.gz   
  2. cd sip-4.16.3  
  3. python3 configure.py  
  4. sudo make  
  5. sudo make install  

配置过程:

SIP无需配置,只是须要安装完成后注意核对一下版本:

分别在终端输入:

  1. sip -V  

在python3环境输入:

  1. >>>import sip  
  2. >>>print(sip.SIP_VERSION_STR)  

查 看两者显示的版本是否一致。如不一致,须要从新执行上述删除过程和安装过程。版本不一致将意味着后面编译PyQt所使用的SIP和Python3调用的 SIP的不一致,致使在Python3中调用PyQt的相关模块(from PyQt5 import QtCore)出现相似以下错误:

  1. the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.1  


安装PyQt5

PyQt 是Python的一个跨平台图形开发工具集,是Python与Qt的成功融合。PyQt包含了大约440个类、超过6000个的函数和方法,灰常强大。需 要注意的是,Eric(一种Python IDE,依赖PyQt)当前最新的稳定版Eric5只支持PyQt4(确切的说是PyQt4.8以上5.0如下),支持PyQt5的Eric版本如今仅为 Eric6.0 snapshot版,该版本包含最新的Eric5的全部功能,但稳定性须要测试。若是你但愿使用稳定的Eric5,请在此步骤安装 PyQt4的最新版PyQt4.11.2。这里咱们安装PyQt5.3.2.

PyQt5.3.2下载:http://www.riverbankcomputing.com/software/pyqt/download5

安装过程:

  1. tar -zxvf PyQt-gpl-5.3.2.tar.gz  
  2. cd PyQt-gpl-5.3.2  
  3. python3 configure.py     

注 意:此命令生成各类Qt模块后,其中的QtWebKitWidgets模块因为Qt4和Qt5的qprinter.h所属模块的调整(Qt4存在于 QtGui中,Qt5将其调整到QtPrintSupport中了),QtWebKitWidgets的Makefile中缺失了对 QtPrintSupport的头文件目录引用,会致使后面编译PyQt5时没法找到qprinter.h头文件,编译失败(编译过程很是漫长):

  1. qprinter.h: No such file or directory  

因此须要向刚生成的QtWebKitWidgets模块源文件的MakeFile文件的INCPATH中添加QtPrintSupport引用。

原INCPATH为:

  1. INCPATH       = -I/opt/Qt/5.3/gcc/mkspecs/linux-g++ -I. -I. -I/usr/include/python3.4m -I/opt/Qt/5.3/gcc/include -I/opt/Qt/5.3/gcc/include/QtWebKitWidgets -I/opt/Qt/5.3/gcc/include/QtWebKit -I/opt/Qt/5.3/gcc/include/QtWidgets -I/opt/Qt/5.3/gcc/include/QtNetwork -I/opt/Qt/5.3/gcc/include/QtGui -I/opt/Qt/5.3/gcc/include/QtCore -I.  

修改成:

  1. INCPATH       = -I/opt/Qt/5.3/gcc/mkspecs/linux-g++ -I. -I. -I/usr/include/python3.4m -I/opt/Qt/5.3/gcc/include -I/opt/Qt/5.3/gcc/include/QtWebKitWidgets -I/opt/Qt/5.3/gcc/include/QtWebKit -I/opt/Qt/5.3/gcc/include/QtWidgets -I/opt/Qt/5.3/gcc/include/QtNetwork -I/opt/Qt/5.3/gcc/include/QtPrintSupport -I/opt/Qt/5.3/gcc/include/QtGui -I/opt/Qt/5.3/gcc/include/QtCore -I.  

或者能够直接在QtWebKitWidgets模块源文件的QtWebKitWidgets.pro文件中加入:

  1. QT += printsupport  

也行。

接下来执行编译安装:

  1. sudo make   
  2. sudo make install  

配置过程:

安装完成后进入Python3环境验证是否安装成功:

  1. >>>import PyQt5  

如 果提示不存在PyQt5模块,表示安装的PyQt5没有被python3正确识别。默认的安装路径为python的site-packages目录。一般 python3的模块安装路径会分红2个,一个/usr/lib/python3,一个/usr/lib/python3.4,两个路径下的模块都能被 python3环境正确调用,可是python3.4的site-packages目录下的模块貌似没法调用。PyQt5恰恰默认安装到此目录了。解决办 法是为其建立软链接,保险起见,python3目录和python3.4目录分别建立一个:

  1. sudo ln -s /usr/lib/python3.4/site-packages/PyQt5 /usr/lib/python3.4/PyQt5  
  2. sudo ln -s /usr/lib/python3.4/site-packages/PyQt5 /usr/lib/python3/dist-packages/PyQt5  

可能不一样的计算机上可识别的模块安装目录会存在差别,可是解决原理都差很少,在python3可识别模块的路径下建立PyQt5的软链接便可让Python3成功识别。

另一个解决办法是在python3 configure.py  时就指定安装目录。如:

  1. python3 configure.py --destdir /usr/lib/python3.4  

安装QScintilla2

QScintilla2是链接编译器和Python的接口,所以是Eric的必需前置组件。QScintilla2 中须要单独安装3个模块:本体,Designer和python bingdings。

QScintilla2.8.4下载:http://www.riverbankcomputing.com/software/qscintilla/download

安装过程:

  1. tar -xzvf QScintilla-gpl-2.8.4.tar.gz  
  2. cd QScintilla-gpl-2.8.4  

A.安装本体:

  1. cd Qt4Qt5  
  2. qmake qscintilla.pro  
  3. sudo make  
  4. make install  

B.安装Designer:

  1. cd ../designer-Qt4Qt5  
  2. qmake designer.pro   
  3. sudo make  
  4. sudo make install  

C.安装Python bingdings:

  1. cd ../Python  
  2. python3 configure.py --pyqt=PyQt5  
  3. sudo make  
  4. sudo make install  
以 上步骤便可正确安装QScintilla2。须要注意的是Python bingdings安装时须要指定 --pyqt=PyQt5参数,不然默认是为PyQt4安装。或者直接修改其configure.py,将 pyqt5_is_default = False改成pyqt5_is_default = True也可。

配置过程:

无需额外配置。

安装Eric6

Eric 做为一款强大的开源Python IDE,支持Qt界面设计器的Eric在Python GUI开发中更是数一数二,Python+PyQt+Eric已经成为一种标准的Python GUI开发平台。其中Eric4支持Python2.6+与PyQt4.6+组合,Eric5支持Python3.0+与PyQt4.8+组 合,Eric6支持Python3.0+与PyQt5.0+组合。目前Eric5.4.7为最新稳定版。Eric6.0为snapshot版。上文已有介 绍。具体搭配可参考:http://eric-ide.python-projects.org/eric-download.html。这里安装 Eric6.0.

Eric6.0下载:http://sourceforge.net/projects/eric-ide/files/eric6/unstable/

下载其中的eric6-6.0-snapshot-20140720.tar.gz主文件和eric6-i18n-zh_CN.GB2312-6.0-snapshot-20140720.tar.gz中文语言包。

安装过程:

  1. tar -zxvf eric6-6.0-snapshot-20140720.tar.gz  
  2. tar -zxvf eric6-i18n-zh_CN.GB2312-6.0-snapshot-20140720.tar.gz     //语言包文件会自动解压到Eric6.0主文件解压目录中。没有的话手动复制。  
  3. cd eric6-6.0-snapshot-20140720  
  4. sudo python3 install.py           //安装主程序  
  5. sudo python3 install-i18n.py   //安装中文语言包  

应该可以顺利安装完成。

须要注意,因为是以root身份安装(sudo),因此运行时须要执行:

  1. sudo eric6  

才不会致使Eric运行或者关闭时写入配置文件出错(sudo安装的Eric6的文件都是root全部,其余用户执行Eric6写入配置文件时权限不足)。为了保证直接执行:

  1. eric6  

时不致出错,能够将当前用户的eric6目录权限设置为可读写:

  1. sudo chmod a+w -R ~/.eric6  
  1. sudo chmod a+w -R ~/.config/Eric6  

或者安装时就直接

  1. python3 install.py    
  2. python3 install-i18n.py  

就无需sudo执行了。可是不推荐这样作。


配置过程:

终端输入eric6启动:

一、选择Settings -> preference -> Editor -> Autocompation。勾选全部选框;


二、选择Settings -> preference -> Editor -> QScintilla 。勾上左右的两个选框,而后在下面source中,选择from Document and API files;


三、 选择Settings -> preference -> Editor -> APIs。勾选Complie APIs Autocompation,在Language中,选择python3。点面下面的Add from installed APIs按钮,选择住须要的.api文件。最后点击Compile APIs;


四、选择Settings -> preference -> Interface -> Interface。右侧Language根据喜爱选择中文或者English。重启生效。


配置完成。


Demos

提供2个简单的Demo验证平台是否正确搭建。

A. 非Eric小程序:

[python] view plain copy print ? 在CODE上查看代码片 派生到个人代码片
  1. #!/usr/bin/env python  
  2. from PyQt5.QtWidgets import (QApplication, QLabel)  
  3. import sys  
  4.   
  5.   
  6. if __name__ == "__main__":  
  7.     app = QApplication(sys.argv)  
  8.     label = QLabel("<center>Hello World with PyQt5!</center>")  
  9.     label.resize(20050)  
  10.     label.show()  
  11.     sys.exit(app.exec_())  


B. Eric小项目:

此部分转自:http://www.pythoner.com/89.html

一、新建项目。

点击【项目】-【新建】,弹出以下的对话框。建立一个名为demo2的项目。注意,在建立项目时,eric不会自动根据填写的项目名称修改项目文件夹名称!


点击肯定以后,能够看到一个源代码树中只有__init__.py的项目。另外,eric还建立了几个文件,可是并不会在这里显示出来,他们分别是项目文件”pyqtdemo.e4p”和”_eric4project”文件夹。

二、新建窗体。

将 左侧的【源代码】选项卡切换至【窗体】选项卡(左数第二个)。右键空白区域,选择【新建窗体】。在弹出的对话框中选择【对话框】。在弹出的文件对话框中, 选择文件位置,并填写文件名称。这里,咱们将其命名为demo2.ui。肯定后,就能够看到【窗体】选项卡中,有一个demo2.ui文件了。


三、设计窗体。

右键点击“pyqtdemo.ui”文件,选择【在Qt设计师中打开】,就能够在Qt Designer中设计UI界面了。


从图中能够看到,Qt Designer分为以下几个部分:

  • 菜单栏:包括文件、编辑、窗体、视图、设置、窗口和帮助。
  • 工具栏:包括文件操做、部件先后置、编辑窗口部件、编辑信号/槽、编辑伙伴、编辑Tab顺序、布局方式、调整大小等。
  • 部件栏:包括各类可用部件。
  • 窗体设计区域
  • 对象查看器:能够查看各部件对象关系树及其所属的类
  • 属性编辑器
  • 信号/槽编辑器
  • 动做编辑器
  • 资源编辑器

3.一、修改窗体属性

默 认的窗体属性中,objectName(部件名称,其余程序引用时使用)默认为Dialog,windowTitle(窗体标题)默认也是Dialog。 咱们能够根据本身的须要,对对话框的各个属性进行修改。这里,我只修改了windowTitle为“PyQt Demo”,并改变了其大小。

3.二、添加部件

从左侧的widget box中拖出3个PushButton,1个label。修改它们的objectName、text等属性。其中3个PushButton的ObjectName分别为btn一、btn二、btnClose。
添加后的效果图,以下图所示:


四、信号与槽

4.一、概念

在PyQt5中,事件处理的相关术语为“信号(signal)”和“槽(slot)”。
信号的含义就是咱们常说的事件,好比按钮被按下、复选框勾选状态变动、可输入文本框文本变动等等。
槽的含义则是事件处理函数,好比关闭窗体、隐藏窗体、最大/小化、设置焦点、重绘等。

4.二、使用一个自带的槽

咱们从工具栏中,选择【编辑信号/槽】。

拖动要编辑的部件,会出现一个相似于电路中接地符号的标志,并弹出对话框。

这里,咱们选择clicked(),即按钮被按下,此时看到右侧可选的槽并很少,而且没有咱们但愿使用到的关闭功能。


勾选【显示从QWidget继承的信号和槽】,这时能够发现,右侧的槽多了不少。在其中找到close(),点击肯定。此时,点击【关闭】按钮执行对话框关闭的功能就已经实现了。


下图是已经建立了【关闭】按钮槽以后的窗体设计图。


4.三、第一次运行

虽然只实现了一个关闭功能,可是仍是让咱们先来看看如何运行这个到目前为止一行代码都没有写过的程序吧。
如今回到eric的界面,右键“demo2.ui”,选择【编译窗体】。

短 暂的时间事后,能够看到编译成功提示。这时,咱们切换到【源代码】选项卡,能够看到一个名为Ui_demo2.py的文件,这就是根据刚才那个ui文件自 动编译而成的,咱们不须要对其进行任何修改,也不该当对其进行任何修改,由于,任何对这种文件,在下次编译后,以前的修改会所有不存在。

看,下图,就是咱们第一次运行时的场景。在eric里,咱们能够F2直接运行,或F5进行调试。当按下【关闭】的时候,窗体就会被关闭。


4.四、建立自定义槽

使用自带槽的方式很简单,然而,它所能实现的功能也是有限的,在咱们的开发中,绝大多数信号发生时,不会使用默认的槽。所以,这一小节将经过按钮一、2的实现来介绍如何建立一个自定义槽。
自定义槽,就要求本身写其中的槽函数,而以前的操做中,咱们尚未动手写过一次代码,那么这个槽的代码写在哪里呢?
咱们再切换回【窗体】选项卡,右键demo2.ui,选择【生成对话框代码】。
首先,点击【新建】,新建一个类,在这里能够修改类名、文件名和路径。

而后在下面的选框中,选择本身须要使用到的信号。好比,个人选择以下图所示,是两个按钮被按下时的信号:


这时,就生成了一个默认的代码。对这个代码进行修改,实现预期的内容。


五、完成

修改以后代码和运行界面以下:



( 完 )

相关文章
相关标签/搜索