Eric4在Windows下的安装

时间:2021-05-05 23:05:17

Eric4在Windows下的安装
2008年6月8日
转载请注明作者RunningOn

在Linux下,可以apt-get的就直接apt-get,不可以的去官网下载后解压运行就OK。因为大部分情况下Eric4所依赖的包Linux默认都会装。保险起见,请检查是否安装了python,Qt4,和PyQt4。
本文重点介绍Eric4在Windows下的安装与配置。Eric4在Linux下的配置与Windows下相同。

在Windows下会麻烦一些。步骤是:
1安装python与pyqt4
2安装eric4
3第一次运行eric4时会提示进行配置
4修改一个bug

以下是详细说明:

1. 安装python与pyqt4,不用单独安装qt。python推荐安装2.5.x版。如果系统之前已经有qt了,pyqt与qt的版本号前两位最好一样,比如pyqt4.4.2与qt4.4.1是关系不大的,但pyqt4.4.x与qt4.3.x可能就会有问题。
   Python下载地址: http://www.python.org/download/
   pyqt下载地址:http://www.riverbankcomputing.co.uk/software/pyqt/download
   PS: pyqt自带的example相当赞,推荐看看。
2. eric下载解压后有个install.py,运行python install.py即可。在Windows下,要求QtCore4.dll所在的文件夹包含在环境变量PATH中,不然安装时会提示找不到 QtCore4.dll。在PyQt安装时,默认会自动设定好环境变量。
   安装完毕后,直接双击eric4.pyw或eric4.bat都可以运行Eric4。不同之处在于后者会打开一个DOS黑窗口,不会影响性能,最多影响心情。
3. 安装后第一次运行Eric4会提示进行配置。推荐把各配置项都看看,自动补全与智能感知的功能默认都没有打开,而且比较弱,导入.api文件后可以强化。 打开功能并强化的方法:单击菜单Settings->Preferences后弹出对话框,选择左侧的Editor分支下的 Autocompletion,全勾上,source选择"from Document and API files"。然后再在左侧选择Editor分支下的APIs,勾上复选框,语言选择Python,单击按钮Add from installed APIs,把你需要的.api文件都加进去,最后点击Compile APIs,要花几分钟,再点确定就OK。现在你的Autocomplete的功能就很牛了,虽然仍不完美。可以把自己的程序生成.api文件并添加。生成 方法是在Project->Source Documentation->Generate API file.
4. 如果要用到QtDesigner(界面设计器),要改个脚本。打开PyQt4/bin/pyuic4.bat,会发现里面执行的是C: /Python2.5/python.exe,但我的python不是装在那,后面参数里的pyuic.py所在的路径也不对,改为正确的路径就OK。比 如我的pyuic4.bat就是:
   @python "D:/Program Files/python2.5/Lib/site-packages/PyQt4/uic/pyuic.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

已知bug:
1.有时会提示一些错误,一般是Eric4的代码疏忽了一些变量值为None的情况。点确定就行,不影响使用。
2.一些翻译错误,比如斜体翻译成了意大利体。

一些注意事项:
1.取消多行注释的快捷键Ctrl-Alt-M与千千静听的全局快捷键冲突,可以在Settings->Keyboard shortcuts中更改。
2.在工程中新建代码文件的办法:新建一个文本文件后写入代码,保存为.py文件,然后手动加入到工程中。很土?也许吧。

在Eric4下用PyQt4编写Python的图形界面程序
2008-06-08 15:36
Eric4下用PyQt4编写Python的图形界面程序

200868

转载请注明作者RunningOn

  本文是PyQt4的入门教程。网上能搜到其它教程,但我觉得讲得不是很清楚,希望这篇文章对入门者更加有帮助。

  先介绍一下PyQt4Qt4图形库一经发布就好评不断,它在Python下的绑定PyQt4更是让我眼前一亮,不但漂亮,而且开发程序非常方便。

在我看来,PyQt4最大的改进之一是它不再拘泥与各种布局控件了,也就是说,现在写图形界面程序,和VB一样可以直接拖控件到窗口上并随便改变大小和位置了,不再像以前那样要先放上布局控件,再在布局控件里放其它控件。

PyQt4的介绍就限于此,我也不准备把它与其它Python图形库进行比较了,因为经验表明这些东西的比较,特别是QtGtk的比较总是会引起不必要的争吵。

IDE我使用Eric4Eric4本身是用PyQt4写的,在使用Eric4时就能体会到用PyQt4能写出多棒的图形界面程序。Eric4的详细介绍与安装请见我的其它文章。

操作系统是Windows,在Linux下的操作完全一样。

寒喧结束,进入正题。假设我们要用Python写一个图形界面程序,一个对话框,里面两个button一个label。点击其中一个button能改变label的内容,点击另一个button就退出。

1. 新建工程。

打开Eric4,选择菜单Project->New新建一个工程,名字我们取为HelloPyQt,填好各项并选择工程所在文件夹之后点OK,一个新的不含任何文件的工程就建好了。

2. 新建对话框。

在左侧的ProjectViewer中切换到Forms选项卡(左数第二个),右键点空白位置,选New Form,在弹出的对话框中选择Form类型为Dialog,然后会问你保存到哪。我设定为保存为DlgHello.ui文件。点OK之后就会新建这个文件并自动打开QtDesigner

3. 设计界面。

先修改主对话框的属性。选中对话框,在右侧的属性编辑器中就可以查看/修改对话框的属性。将windowTitle改为"Hello, PyQt",将objectName改为"DlgHello”,前者是对话框标题,后者在以后生成代码时有用,不建议使用默认值。

我们拖动一个Label(DisplayWidgets分类中)到对话框中,将属性text改为"Hello, PyQt"objectName改为lblHello

再拖动两个PushButton(Buttons分类中)到对话框,分别将属性text改为"你好"和"退出"。将属性objectName分别改为btnHellobtnExit

界面大概是这个样子:

Eric4在Windows下的安装

4. 处理事件。

PyQt4下,事件处理方面的术语为“信号”和“槽”,即signalslot。事件对应信号signal,而事件的处理函数则为slot槽。

PyQt4有一些预定义的slot,我们可以直接用,比如“退出”按钮的slot,其实就是关闭对话框,这个slot已经在PyQt4中有定义了。对于这样的slot,我们不用单独写代码,在QtDesigner中就可以完成。而对于“你好”按钮,我们需要自己写代码。对于这样的slot,我们在QtDesigner中不做任何处理,甚至不做定义。

那么在这个例子中,在QtDesigner里我们只处理退出按钮的单击事件。

单击“编辑信号/槽”按钮Eric4在Windows下的安装进入信号/槽编辑模式。点中退出按钮并拖动,会出现一个像是电路图中的接地图示一样的东西,如下:

 

Eric4在Windows下的安装

松开鼠标,就会弹出“配置连接”对话框。勾上“显示从QWidget继承的信号和槽”,左侧选择clicked(),右侧选择close(),点确定,就OK了。

 

如果要继续调整对话框外观,点击“编辑窗口部件”按钮Eric4在Windows下的安装回窗口编辑模式。

5. 生成界面代码

保存之后关闭QtDesigner,会发现Eric4ProjectViewerForms选项卡中已经多出DlgHello.ui了。右击它选择Compile Form,就能生成Ui_DlgHello.py文件,并自动加入到工程中。在Sources选项卡中可以看到。

双击Ui_DlgHello.py可以看它的内容,其实是生成了一个Ui_DlgHello类。Ui_DlgHello.py是可以单独运行的,在Eric4中直接按F2可以运行,看看初步的效果。发现单击退出按钮果然能直接退出程序。

不建议手动修改Ui_DlgHello.py,因为每次改动界面并生成代码后会将手动进行的修改给覆盖掉。

6. 添加额外的代码。

“你好”按钮的单击处理代码还需要手写。

PyQt4中,界面代码与事件代码是分开的,这一点很赞,这样每次改界面就不会影响到事件处理的代码了。而wxPython这一点就做得不好。

事件处理要新建一个类并继承DlgHello类,然后在这个新类里写事件处理函数。新建类的工作可以交给Eric4来完成。右键点DlgHello.ui,选择Generate Dialog Code,在弹出的对话框中设定ClassNameDlgHello,同时,在这个对话框中可以选择我们感兴趣的事件,Eric4会一并生成事件处理函数的定义。如下图:

点确定之后,DlgHello.py就生成了。打开这个文件,“你好”按钮的事件被定义为:

    @pyqtSignature("")

    def on_btnHello_clicked(self):

        """

       Slot documentation goes here.

        """

        # TODO: not implemented yet

        raise NotImplementedError

注意这个@pyqtSignature("")自动处理了下面定义的槽slot(事件处理函数)与相对应的信号signal(事件)之间的关联,这里是指,单击btnHello按钮,就会自动执行这个函数。slot的命名规则就是”on_对像名_信号名,如果想添加新的slot,按这个规则来添加函数就行,并且在函数定义语句之前加上@pyqtSignature(""),不用再重新生成一次DlgHello.py文件。

其实另外一种关联signalslot之间的方法是在运行里绑定,比如按钮对象btnAboutclicked信号的槽是about_clicked函数,那么在__init__函数中加入这样一句话:

        PyQt4.QtCore.QObject.connect(self.btnAbout, PyQt4.QtCore.SIGNAL("clicked()"), self.about_clicked)

那么单击按钮btnAbout时就会执行about_clicked函数。

两种方法各有长处。第一种方法简单,第二种方法对于多个signal使用同一个slot时很有效。

on_btnHello_clicked函数改为:

    @pyqtSignature("")

    def on_btnHello_clicked(self):

        self.lblHello.setText("你好,PyQt4")

在文件头部加上:

import PyQt4, PyQt4.QtGui, sys

再在代码最后加上(Ui_DlgHello.py末的几乎一样)

if __name__ == "__main__":

    app = PyQt4.QtGui.QApplication(sys.argv)

    dlg = DlgHello()

    dlg.show()

    sys.exit(app.exec_())

这样就OK了。

 

7. 最后的收尾工作。

F2运行脚本,发现点击“你好”按钮后lblHello label中的文字是乱码。

解决办法很简单,把代码中的("你好,PyQt4")改为(u"你好,PyQt4")就行了。PyQt4对中文的支持是很好的。代码统一使用utf8编码,能省去很多麻烦。