`
hellocgc
  • 浏览: 29254 次
  • 性别: Icon_minigender_1
  • 来自: 汕头
社区版块
存档分类
最新评论

【转】Eric4入门教程

阅读更多

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

界面大概是这个样子:

 

4. 处理事件。

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

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

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

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

 


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

 

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

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编码,能省去很多麻烦

分享到:
评论

相关推荐

    json入门基础教程

    ### JSON入门基础教程:理解与应用 #### 一、JSON概览 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,它使用了...

    [Eric_Matthes]_Python.rar

    从这个标题我们可以推测,这份教程可能涵盖了Python的基础知识,适合那些想要入门Python编程的人群。 【描述】:“python” 描述中的“python”一词简单明了,直接指出了该压缩包内容的核心——Python编程语言。...

    Div+CSS布局入门教程

    ### Div+CSS布局入门教程详解 #### 一、引言 在网页开发中,Div+CSS布局技术是一项基本且重要的技能。它可以帮助开发者构建出既美观又具有良好用户体验的网站。本教程旨在为初学者提供一个从理论到实践的全面指南...

    Python安装学习及网课入门教程

    ### Python安装学习及网课入门教程 #### 一、Python概述 Python是一种功能强大的编程语言,具有高级特性、解释执行、交互式环境以及面向对象的特点。由于其设计时注重高可读性和简洁性,使得Python成为了众多编程...

    Python入门经典教程,让你轻松从入门到实践

    ### Python入门经典教程 #### 一、教程定位 - **目标读者**:适合所有层次的Python初学者,无论是否有编程基础都能轻松上手。 - **教学特点**:以实践为导向,通过丰富的示例和项目帮助读者掌握Python编程。 #### ...

    Python入门教程的简单分享.docx

    ### Python入门教程的简单分享 #### Python简介 Python是一种高级编程语言,因其简洁明了的语法和出色的代码可读性而备受青睐。Python被广泛应用于Web开发、数据科学、人工智能等多个领域,对于初学者来说非常友好...

    Web开发入门系列教程

    首先,让我们关注“CSS入门教程.doc”。CSS,全称Cascading Style Sheets(层叠样式表),是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式的样式表语言。在Web开发中,CSS是不可或缺的一部分,它...

    [KnockoutJS] KnockoutJS 入门教程 (英文版)

    [Packt Publishing] KnockoutJS 入门教程 (英文版) [Packt Publishing] KnockoutJS Starter (E-Book) ☆ 出版信息:☆ [作者信息] Eric M. Barnard [出版机构] Packt Publishing [出版日期] 2012年11月23日 ...

    Python编程:从入门到实践-Eric Matthes_Eric_python_.zip

    《Python编程:从入门到实践》是一本深受初学者欢迎的Python编程教程,作者Eric Matthes通过简洁易懂的语言和丰富的实例,引导读者逐步掌握Python编程的基础知识和实践技巧。这本书不仅适合完全没有编程经验的新手,...

    VSTO 开发者指南 中文 VSTO 开发 手册

    4. **安全性**: 支持数字签名,帮助确保加载项的安全性和可信度。 #### 三、导入和导出设置 在VSTO开发中,“导入和导出设置”通常指的是将Office文档中的一些配置或数据转换为可读写的形式,以便于程序可以操作...

    CSS教程从入门到精通

    【CSS教程从入门到精通】 CSS,全称Cascading Style Sheets,中文称为层叠样式表,是网页设计中用于控制网页布局和样式的语言。它与HTML或XML(包括如SVG、MathML等各种XML方言)配合使用,可以将表现与内容分离,...

    python基础从入门到实践课后练习答案(中文版).pdf

    **练习3-4 嘉宾名单** 这个练习旨在教授学习者如何使用列表来模拟现实世界的情景,例如发送晚餐邀请。 1. **定义嘉宾列表**: - 创建一个包含几位嘉宾姓名的列表`guests`。 2. **发送邀请**: - 使用for循环遍历...

    python教程答案第三章-python从入门到实践课后习题第三章.pdf

    例如,`names[0]`表示列表的第一个元素,这里用来获取并打印名字`eric`。 练习3-2进一步扩展了列表的使用,这次不是直接打印名字,而是为每个名字创建一条问候语。这展示了如何通过字符串拼接来组合元素,如`names...

    Python Crash Course 2016 Eric Mattes

    《Python Crash Course》是由Eric Matthes编写的编程入门书籍,它旨在为初学者提供一种实用且项目导向的学习方法来掌握Python语言。本书出版于2016年,并由No Starch Press发行,其ISBN号为978-1-59327-603-4。 ###...

    Java 基础教程,想入门的来看

    Java是一种广泛使用的面向对象的高级编程语言,它在1990年代由Sun Microsystems公司...对于想要入门Java编程的初学者而言,Java基础教程提供了一个全面而清晰的学习资源,帮助他们快速掌握Java语言的核心概念和技术。

    compass的几个入门网页

    4. 阅读官方文档和在线教程,加深理解。 5. 参考其他开发者的工作,了解如何在实际项目中使用Compass。 总之,Compass为Web开发者提供了一个强大的工具,通过它可以更有效地管理和组织CSS代码,提高开发效率。作为...

    J2EE入门级指导书

    《J2EE入门级指导书》作为一本权威的教程,不仅介绍了J2EE的基本概念和技术细节,还包含了大量实用的示例和最佳实践,对于希望深入了解J2EE的开发者来说,是一本不可或缺的学习资料。通过系统地学习本书,开发者可以...

    Python编程:从入门到实践1

    总的来说,《Python编程:从入门到实践1》是一本全面且实践性强的Python教程,适合所有层次的Python爱好者,无论你是完全的新手还是有一定基础的学习者,都能从中受益。通过阅读和完成书中的项目,你将能够建立起...

    Python编程:从入门到实践-第6次1

    总的来说,《Python编程:从入门到实践》是一本实用的Python教程,它不仅提供了丰富的基础知识,还提供了实践项目以加深理解。无论你是想要入门编程,还是希望提升Python技能,这本书都是一个很好的选择。

Global site tag (gtag.js) - Google Analytics