py+pyqt4+Eric4安装配置

【配置环境】

第一步:安装python包

Python 下载 python官网: http://www.python.org/ 

第二步:安装pyqt4

pyqt4   官网:http://www.riverbankcomputing.co.uk/news

下pyqt4的时候请对应你的py版本。下载对应版本的py,比如:32位系统 python2.5.4 就要下PyQt-Py2.5-x86-gpl-4.8.4-1

第三步:安装Eric4及中文包安装

Eric4 官网:http://eric-ide.python-projects.org/index.html

            先将下载的Eric4的安装包和中文包解压缩到同一个文件夹下,然后可以将这个文件夹移动到其他位置(如Python的安装目录下),运行Eric目录下的install.py,然后运行install-i18n.py安装中文包。安装之后运行eric4.pyw就打开了Eric4。之后进行部分配置工作即可使用。

            配置过程如下: Settings – Preferences中,在Eidtor下面,点击APIs,勾选上”Compile APIs automatically”,选择Language为”Python”,点击Add from installed APIs,选择eric4.api或其它你需要的APIs。然后点击下面的”Compile APIs”,这里会需要点时间。结束后点Apply。然后点击Autocompletion,里面的三个都勾选上。然后再点击QScintilla,选”from Document and API files”。Apply,然后OK。

测试程序:

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分别改为btnHello和btnExit。

4. 处理事件。

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

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

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

单击“编辑信号/槽”按钮进入信号/槽编辑模式。点中退出按钮并拖动,会出现一个像是电路图中的接地图示一样的东西。松开鼠标,就会弹出“配置连接”对话框。勾上“显示从QWidget继承的信号和槽”,左侧选择clicked(),右侧选择close(),点确定,就OK了。

如果要继续调整对话框外观,点击“编辑窗口部件”按钮返回窗口编辑模式。

5. 生成界面代码

保存之后关闭QtDesigner,会发现Eric4的ProjectViewer的Forms选项卡中已经多出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,在弹出的对话框中设定ClassName为DlgHello,同时,在这个对话框中可以选择我们感兴趣的事件,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文件。

其实另外一种关联signal与slot之间的方法是在运行里绑定,比如按钮对象btnAbout的clicked信号的槽是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编码,能省去很多麻烦。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值