zoukankan      html  css  js  c++  java
  • Ubuntu8.04下安装Eric以及使用QtDesigner4教程

    1、下载安装Eric:
    全部安装软件均可以在Ubuntu下的新立得软件包管理器中搜索安装。几个必须安装的软件:
    Eric、Qt4、PyQt4.
    2、配置Eric:
    安装完成后,第一次启动Eric会有一个配置界面,如果不及时配置则也可以在settings->references下面进行配置。
    展开左侧Editor,打开Autocompletion,选中Autocomplition Enabled,然后将下面的选项全部选上。source下选中from Document and API files。然后在展开左侧的APIs,语言选择Python,点击add右侧的浏览按钮,在/usr/share/eric/APIs下面,将需要的.api文件全部加进去。然后点击compile APIs,需要些许时间的等待。
    3、新建工程:
    点击project->new,填写必要信息:
    project name:haha
    Language:Python
    Project Type:Qt4 GUI
    Project Directory:/home/myjfm/桌面             (应该可以自由选择)
    Version No.:0.1   (默认即可)
    Main Script:haha.py
    点击确定按钮。之后会询问Add existing files to the project?选择否。继续询问Select version control system for the project 选择None.
    之后在project viewer中选择Forms选项,在空白处右键单击,选择New form,选择Dialog。然后询问保存位置,我设定为保存为DlgHello.ui文件。点OK之后就会新建这个文件并自动打开QtDesigner。 
    4、设计界面:
    先修改主对话框的属性。选中对话框,在属性编辑器中就可以查看/修改对话框的属性。将windowTitle改为"Hello, PyQt",将objectName改为"DlgHello”,前者是对话框标题,后者在以后生成代码时有用,不建议使用默认值。
    我们拖动一个Label(在Display Widgets分类中)到对话框中,将属性text改为"Hello, PyQt",objectName改为lblHello。
    再拖动两个PushButton(在Buttons分类中)到对话框,分别将属性text改为"Hello"和"Exit"。将属性objectName分别改为btnHello和btnExit。
    5、处理事件:
    在PyQt4下,事件处理方面的术语为“信号”和“槽”,即signal和slot。事件对应信号signal,而事件的处理函数则为slot槽。
    PyQt4 有一些预定义的slot,可以直接用,比如“Exit”按钮的slot,其实就是关闭对话框,这个slot已经在PyQt4中有定义了。对于这样的 slot,不用单独写代码,在QtDesigner中就可以完成。而对于“你好”按钮,则需要自己写代码。
    这个例子中,在QtDesigner里先处理退出按钮的单击事件。
    单击Qt设计师对话框中的“编辑“->“编辑信号/槽”按钮进入信号/槽编辑模式。点中退出按钮并拖动,会出现一个像是电路图中接地图示一样的东西,松开鼠标,就会弹出“配置连接”对话框。勾上“显示从QWidget继承的信号和槽”,左侧选clicked(),右侧选close(),点确定,就OK了。
    如果要继续调整对话框外观,点击“编辑窗口部件”按钮返回窗口编辑模式。
    5、生成界面代码:
    保存之后关闭QtDesigner,会发现Eric4的ProjectViewer的Forms选项卡中已经多出DlgHello.ui了。右击它选择 Compile Form,就能生成Ui_DlgHello.py文件(如果显示“Could not start pyuic4. Ensure that it is in the search path“那说明没有安装pyuic4,在终端中直接敲击pyuic4,会提示你安装pyqt4-dev-tools,或者在新立得软件包管理器中搜索pyuic4选中pyqt4-dev-tools安装即可),并自动加入到工程中。在Sources选项卡中可以看到。
    双击Ui_DlgHello.py可以看它的内容,其实是生成了一个Ui_DlgHello类。Ui_DlgHello.py是可以单独运行的,在Eric4中直接按F2可以运行,看看初步的效果。发现单击退出按钮果然能直接退出程序。
    不建议手动修改Ui_DlgHello.py,因为每次改动界面并生成代码后会将手动进行的修改给覆盖掉。
    6、 添加额外的代码:
    “Hello”按钮的单击处理代码还需要手写。
    在PyQt4中,界面代码与事件代码是分开的,这一点很赞,这样每次改界面就不会影响到事件处理的代码了。而wxPython这一点就做得不好。
    事件处理要新建一个类并继承DlgHello类,然后在这个新类里写事件处理函数。新建类的工作可以交给Eric4来完成。右键点DlgHello.ui, 选择Generate Dialog Code,在弹出的对话框中设定ClassName为DlgHello,同时,在这个对话框中可以选择我们感兴趣的事件,Eric4会一并生成事件处理函数的定义。如下图:
    点确定之后,DlgHello.py就生成了。打开这个文件将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了。
    注 意这个@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时很有效。
    7、最后的收尾工作:
    按F2运行脚本,发现点击“Hello”按钮后lblHello label中的文字是乱码。
    解决办法很简单,把代码中的("你好,PyQt4")改为(u"你好,PyQt4")就行了。PyQt4对中文的支持是很好的。代码统一使用utf8编码,能省去很多麻烦。

  • 相关阅读:
    Maximum execution time of 30 seconds exceeded解决错误方法
    php 获取随机数的几个方式
    php header utf8 插入header("Content-type: text/html; charset=utf-8");
    php mysqli query 查询数据库后读取内容的方法
    win7 xampp 验证码,session出不来的问题
    apache 中 ServerAlias让多个域名绑定到同一空间
    最近很火的一条成长公式,看看你属于那一条!
    用crontab执行shell把top命令按日期追加到文件
    php CI 实战教程第一季百度经验杂志
    php 截取字符串第一个字符,截取掉字符串最后一个字符的方法
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2805804.html
Copyright © 2011-2022 走看看