热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3pyqt5linux,Ubuntu14.04下搭建Python3.4+PyQt5.3.2+Eric6.0开发平台

引言找了很多PythonGUI工具集,还是觉得PyQt比较理想,功能强大跨平台,还支持界面设计器。花一天时间折腾了Ubuntu14.04(

引言

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

安装Python3.4

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

安装Qt5

Ubuntu14.04自带Qt4的部分库文件,但是我们的平台要求Qt5,所以首先安装Qt5.

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

安装过程:

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

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

sudo ./qt-opensource-linux-x86-1.6.0-5-online.run

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

sudo ./qt-opensource-linux-x86-1.6.0-5-online.run

启动界面后默认安装即可。

f006d00a3379362e6384023163f4f07d.png

配置过程:

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

export QTDIR=/opt/Qt/5.3/gcc/

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib

export PATH=${QTDIR}/bin:${PATH}

export QTDIR=/opt/Qt/5.3/gcc/

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib

export PATH=${QTDIR}/bin:${PATH}

注意${QTDIR}/bin和${PATH}的顺序!因为Ubuntu14.04默认${PATH}路径中的/usr/bin下存在诸多qt命令(确切的说是指向qtchooser的软连接,qtchooser最终会选择系统自带的Qt4命令:但是这些命令默认都不存在),如果${QTDIR}/bin在${PATH}之后,会导致Qt命令失效。

特别是qmake命令,在后续安装中需要用到,保险起见,在终端输入qmake,如果显示qmake命令不存在,请通过创建软连接进行解决:

将/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上:

sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/bin/qmake

or

sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/lib/i386-linux-gnu/qt4/bin/qmake

sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/bin/qmake

or

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扩展是自动安装的)。终端输入:

sip -V

sip -V

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

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

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

然后正式安装SIP 4.16.3。

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

安装过程:

tar -zxvf sip-4.16.3.tar.gz

cd sip-4.16.3

python3 configure.py

sudo make

sudo make install

tar -zxvf sip-4.16.3.tar.gz

cd sip-4.16.3

python3 configure.py

sudo make

sudo make install

配置过程:

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

分别在终端输入:

sip -V

sip -V

在python3环境输入:

>>>import sip

>>>print(sip.SIP_VERSION_STR)

>>>import sip

>>>print(sip.SIP_VERSION_STR)

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

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

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

2fcd0eba1f4264ee2d62718b128a0852.png

安装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

安装过程:

tar -zxvf PyQt-gpl-5.3.2.tar.gz

cd PyQt-gpl-5.3.2

python3 configure.py

tar -zxvf PyQt-gpl-5.3.2.tar.gz

cd PyQt-gpl-5.3.2

python3 configure.py

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

qprinter.h: No such file or directory

qprinter.h: No such file or directory

所以需要向刚生成的QtWebKitWidgets模块源文件的MakeFile文件的INCPATH中添加QtPrintSupport引用。

原INCPATH为:

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.

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.

修改为:

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.

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文件中加入:

QT += printsupport

QT += printsupport

也行。

接下来执行编译安装:

sudo make

sudo make install

sudo make

sudo make install

配置过程:

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

>>>import PyQt5

>>>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目录分别创建一个:

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

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

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

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

可能不同的计算机上可识别的模块安装目录会存在差异,但是解决原理都差不多,在python3可识别模块的路径下创建PyQt5的软连接即可让Python3成功识别。

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

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

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

安装过程:

tar -xzvf QScintilla-gpl-2.8.4.tar.gz

cd QScintilla-gpl-2.8.4

tar -xzvf QScintilla-gpl-2.8.4.tar.gz

cd QScintilla-gpl-2.8.4

A.安装本体:

cd Qt4Qt5

qmake qscintilla.pro

sudo make

make install

cd Qt4Qt5

qmake qscintilla.pro

sudo make

make install

B.安装Designer:

cd ../designer-Qt4Qt5

qmake designer.pro

sudo make

sudo make install

cd ../designer-Qt4Qt5

qmake designer.pro

sudo make

sudo make install

C.安装Python bingdings:

cd ../Python

python3 configure.py --pyqt=PyQt5

sudo make

sudo make install

cd ../Python

python3 configure.py --pyqt=PyQt5

sudo make

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中文语言包。

安装过程:

tar -zxvf eric6-6.0-snapshot-20140720.tar.gz

tar -zxvf eric6-i18n-zh_CN.GB2312-6.0-snapshot-20140720.tar.gz     //语言包文件会自动解压到Eric6.0主文件解压目录中。没有的话手动复制。

cd eric6-6.0-snapshot-20140720

sudo python3 install.py           //安装主程序

sudo python3 install-i18n.py   //安装中文语言包

tar -zxvf eric6-6.0-snapshot-20140720.tar.gz

tar -zxvf eric6-i18n-zh_CN.GB2312-6.0-snapshot-20140720.tar.gz //语言包文件会自动解压到Eric6.0主文件解压目录中。没有的话手动复制。

cd eric6-6.0-snapshot-20140720

sudo python3 install.py //安装主程序

sudo python3 install-i18n.py //安装中文语言包

应该能够顺利安装完成。

需要注意,由于是以root身份安装(sudo),所以运行时需要执行:

sudo eric6

sudo eric6

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

eric6

eric6

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

sudo chmod a+w -R ~/.eric6

sudo chmod a+w -R ~/.eric6

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

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

或者安装时就直接

python3 install.py

python3 install-i18n.py

python3 install.py

python3 install-i18n.py

就无需sudo执行了。但是不推荐这样做。

c23673f743518602c4a2bbf713d87f8e.png

配置过程:

终端输入eric6启动:

1、选择Settings -> preference -> Editor -> Autocompation。勾选所有选框;

2e641ffef5c50f3726d419398ab619b5.png

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

5b895a0665839b6ead49bf2a350051d4.png

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

b6c3ec9d6c4168f820431f7ffbd83ceb.png

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

90c8e76984733956b1ce87a6f8bdb68e.png

配置完成。

Demos

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

A. 非Eric小程序:

#!/usr/bin/env python

fromPyQt5.QtWidgetsimport(QApplication, QLabel)

importsys

if__name__ =="__main__":

app = QApplication(sys.argv)

label = QLabel("

Hello World with PyQt5!
")

label.resize(200,50)

label.show()

sys.exit(app.exec_())

#!/usr/bin/env python

from PyQt5.QtWidgets import (QApplication, QLabel)

import sys

if __name__ == "__main__":

app = QApplication(sys.argv)

label = QLabel("

Hello World with PyQt5!
")

label.resize(200, 50)

label.show()

sys.exit(app.exec_())

5433ab01899f89214757bc79714c3f58.png

B. Eric小项目:

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

1、新建项目。

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

9aec064ac3521e75451d771877c02a20.png

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

2、新建窗体。

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

a9197ab5ff799fea445d214f023ce2ff.png

30ac532001db8adca995a729e6a3f47b.png

e1a6e25bf3b64a2e11bf5451d31f528e.png

3、设计窗体。

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

4c6e772b70d378e23b27d9420f84719d.png

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

菜单栏:包括文件、编辑、窗体、视图、设置、窗口和帮助。

工具栏:包括文件操作、部件前后置、编辑窗口部件、编辑信号/槽、编辑伙伴、编辑Tab顺序、布局方式、调整大小等。

部件栏:包括各种可用部件。

窗体设计区域

对象查看器:可以查看各部件对象关系树及其所属的类

属性编辑器

信号/槽编辑器

动作编辑器

资源编辑器

3.1、修改窗体属性

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

3.2、添加部件

从左侧的widget box中拖出3个PushButton,1个label。修改它们的objectName、text等属性。其中3个PushButton的ObjectName分别为btn1、btn2、btnClose。

添加后的效果图,如下图所示:

5dea4c3b931e1a1352615bbdcd01eb46.png

4、信号与槽

4.1、概念

在PyQt5中,事件处理的相关术语为“信号(signal)”和“槽(slot)”。

信号的含义就是我们常说的事件,比如按钮被按下、复选框勾选状态变更、可输入文本框文本变更等等。

槽的含义则是事件处理函数,比如关闭窗体、隐藏窗体、最大/小化、设置焦点、重绘等。

4.2、使用一个自带的槽

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

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

这里,我们选择clicked(),即按钮被按下,此时看到右侧可选的槽并不多,并且没有我们希望使用到的关闭功能。

1ca1d6471987120620af1b89dce068d7.png

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

8d1d1bdb12d81f5a1fb3be51b0c4db82.png

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

87025bbc9de65e9bdfef548864109594.png

4.3、第一次运行

虽然只实现了一个关闭功能,但是还是让我们先来看看如何运行这个到目前为止一行代码都没有写过的程序吧。

现在回到eric的界面,右键“demo2.ui”,选择【编译窗体】。

短暂的时间过后,可以看到编译成功提示。这时,我们切换到【源代码】选项卡,可以看到一个名为Ui_demo2.py的文件,这就是根据刚才那个ui文件自动编译而成的,我们不需要对其进行任何修改,也不应当对其进行任何修改,因为,任何对这种文件,在下次编译后,之前的修改会全部不存在。

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

b15d046aae3f94339bcc4fb00570b830.png

4.4、创建自定义槽

使用自带槽的方式很简单,然而,它所能实现的功能也是有限的,在我们的开发中,绝大多数信号发生时,不会使用默认的槽。因此,这一小节将通过按钮1、2的实现来介绍如何创建一个自定义槽。

自定义槽,就要求自己写其中的槽函数,而之前的操作中,我们还没有动手写过一次代码,那么这个槽的代码写在哪里呢?

我们再切换回【窗体】选项卡,右键demo2.ui,选择【生成对话框代码】。

首先,点击【新建】,新建一个类,在这里可以修改类名、文件名和路径。

然后在下面的选框中,选择自己需要使用到的信号。比如,我的选择如下图所示,是两个按钮被按下时的信号:

a18635235db562e6008a4e483a312b3e.png

30ce7f759b776e5a5840c60c87f22709.png

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

4cee4dd3fc95dee52966670ecb39524a.png

5、完成

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

f77750d78a3cc98cf47eea5b8a76e1ea.png

( 完 )

PyQt 的详细介绍:请点这里

PyQt 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 本篇博文面向Linux用户,在Linux下(0x00为什么需要有两个版本的PythonPython2和Python3不兼容是每个接触过Python的那就把Python ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • Linux Shell基础脚本执行方式和Bash基本功能
    一概述1Shell是一个命令行解释器,它为用户提供了一个向内核发送请求以便运行程序的界面系统级程序Shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强,Shell是解释 ... [详细]
  • 总结:先划分窗口,再对每个窗口做高通滤波。不用先滤波再划分。以下转载自http:blog.csdn.netthoughts_stormsarticled ... [详细]
  • Autoware 进行 Robosense16 线雷达与 ZED 双目相机联合标定!
    项目要标定雷达和相机,这里记录下我标定过程,用的速腾Robosense-16线雷达和ZED双目相机。一、编译安装Autoware-1.10.0我没有安装最新版本的Autoware, ... [详细]
author-avatar
jack2502937407
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有