资讯专栏INFORMATION COLUMN

图解——PyQt4从入门到运用

史占广 / 2848人阅读

摘要:将程序包装在界面里,可以将输入通过多种途径如文本框弹出路径选择等输入到程序里。将输出通过文本框显示出来将执行信息如如报错信息运行进度通过文本框或进度条显示出来文章安排先介绍安装和配合的使用。

作为一个程序的开发者,我们仅仅需要在相应路径通过命令行就可执行那个程序。但是,不懂行的人不理解这个黑框框的东西,陌生领域任何人都没有安全感,所以他们是拒绝接受一个项目仅仅只是通过一个黑框框来执行的。所以GUI窗口呼之而出。

“Life is short (You need Python)”
-- Bruce Eckel

python作为一门快速开发语言,其GUI模块自然也不例外。用python来做GUI的模块、包有:
Tk、wxWidgets、Qt、GTK,本篇文章是学习的是用Qt的PyQt4.(PyQt5只适合Python3.0以上)

本篇文章这样安排:
1:简介
2:PyQt4的安装,配合Pycharm的安装
3:PyQt4一定要知道的基础
4:找到你需要的界面配图和代码
5:深入一个复杂的例子
6:总结

1.简介 1.1.PyQt4能做什么

PyQt是用来创建GUI应用程序的工具包,它把Python和成功的Qt绑定在一起,Qt库是这个星球上最强大的库之一,如果不是最强大的话。PyQt的官方网站是 www.riverbankcomputing.co.uk , 它由 Phil Thompson 开发。
将程序包装在GUI界面里,可以:

将输入通过多种途径如文本框、弹出路径选择等输入到程序里。

将输出通过文本框显示出来

将执行信息如如报错信息、运行进度通过文本框或进度条显示出来

1.2.文章安排

先介绍PyQt4安装和配合Pycharm的使用。

或简要或详细叙述PyQt的必须知道的知识,只有了解、理解、掌握这些才能看懂任何一个PyQt程序代码。

配合大量现成的GUI图形界面的图片,你可以与自己脑子里的效果图对应,迅速找到你需要使用众多PyQt类中的哪一个,并且有实现代码(引用的)。向下面这样,通过链接,快速找到想要的代码。
代码地址

我认为这非常重要,因为作为一个初学者,我们常常遇到这样的困境:

我大概知道我要完成哪些功能,但我不知道怎么画出来。

我能画出来,但我不知道调用什么类去实现,甚至在GOOGLE上找这个类的时候,都不知道用什>么词汇去描述你的界面,略尴尬。

深入一个例子,调用自己的脚本配合GUI界面,写出一个可以展示的程序。

总结一下遇到的坑

1.3.一些好的资源

官网文档:http://pyqt.sourceforge.net/Docs/PyQt4/
也是官方文档PyQt4 APIs http://pyqt.sourceforge.net/Docs/PyQt4/modules.html
zetcode:良心文档每行代码都给解释。http://zetcode.com/gui/pyqt4/
zetcode中文版:http://www.qaulau.com/books/PyQt4_Tutorial/index.html
PyQt4 精彩实例分析:受益很多,本文第4节基本靠它了。http://www.linuxidc.com/Linux/2012-06/63652.htm
一个不错的博客文章:http://blog.csdn.net/a359680405/article/details/45096185
QT参考文档:玩到最后不得不看QT了:http://www.kuqin.com/qtdocument/
QT designer文档:http://doc.qt.io/qt-4.8/designer-manual.html

1.4.引用说明

基本引用了以上资源里面的文章,特别是来源:Linux社区 作者:chumpklutz来源:CSDN 作者:翻滚吧挨踢男

2.PyQt4的安装,配合Pycharm的安装

基本参考了PyQt5+python3+pycharm开发环境配置
首先安装分为两个部分:PyQt包和Pycharm设置
PyQt4包:
下载地址
注意:32位的还是64位的,Python2还是python3
然后将安装路径放入系统路径中去:
变量名:QT_QPA_PLATFORM_PLUGIN_PATH
变量值:C:Python34Libsite-packagesPyQt4plugins
Pycharm配置:
步骤如下文:
http://cristalspring.blog.163.com/blog/static/14432742520156510264082/

3.PyQt4一定要知道的基础 3.1.开发流程:
3.1.1 先在Qt designer里面设计个大概,在Pycharm里面通过通过PyUIC将Qt designer里面的example.ui文件转为example.py文件,  
之后就可以直接使用example.py文件了。
3.1.2 注意example.py只是图形界面静态布局的程序,你还要把你的脚本程序script.py结合进入,所以还需要一个myWindow.py程序  
用来连接example.py和script.py.也就是说在myWindow.py中import exampy;import script.py.
3.1.3 myWindow.py中通常包括对图形布局的一些改动和结合、添加按钮动作、等等使图形界面"活"起来的方法。

3.2.步骤及相关知识

对于这样一个界面:

第一步:设计好界面的草图

这里推荐使用Balsamiq Mockups 3
设计如下:

第二步:实现这个草图

界面有三种可以选择Dialog、Widget、QMainWindow至于选哪种详细可以见这里:
http://www.qtcentre.org/threads/3465-Difference-between-Dialog-and-widget-and-QMainWindow
http://stackoverflow.com/questions/3298792/whats-the-difference-between-qmainwindow-qwidget-and-qdialog
这里我们使用Widget,其它两种都是由之而来
在上图的草图中,主要有标签、输入框和按钮三种元素,怎样去用代码实现呢?

打开Qt designer,它位于PyQt4的安装包中,具体位置在D:Program FilesPythonLibsite-packagesPyQt4

打开后如下图

可以在左侧选择相应的按钮,仅仅通过拖拽完成草图界面。
然后通过Pycharm转为.py文件,在Pycharm中单击该.ui文件,然后点击图中选项

3.3.主要类介绍

主要类介绍:QtGui Module
主要有两个包:

QtCore

QtCore 模块包括了核心的非GUI功能,该模块用来对时间、文件、目录、各种数据类型、流、网址、媒体类型、线程或进程进行处理。

QtGui

QtGui 模块包括图形化窗口组件和及相关类。包括如按钮、窗体、状态栏、滑块、位图、颜色、字体等等。

总的来说:QtGui负责长得好看,QtCore负责有用。

QtGui举例:

# simple.py

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle("simple")
widget.show()

sys.exit(app.exec_())
上面的代码显示在屏幕上显示一个小窗体。

import sys
from PyQt4 import QtGui
我们在这里进行一些必要的import操作。基本的GUI组件在 QtGui 模块中。

app = QtGui.QApplication(sys.argv)
每个PyQt4程序必须创建一个application对象,application在 QtGui 模块中, sys.argv 参数是命令行中的一组参数。Python脚本可以在shell中运行,这样,我们可以控制脚本的启动。

widget = QtGui.QWidget()
QWidget 窗口组件是PyQt4中所有用户界面对象的基类,我们使用 QWidget 默认的构造,没有父亲。没有父亲的窗口组件称为窗体。

widget.resize(250, 150)
resize() 方法调整了 widget 的大小,宽250像素,高150像素。

widget.setWindowTitle("simple")
这里我们为窗口设置了标题,标题显示在标题栏上。

widget.show()
show() 方法将窗口呈现在屏幕上。

sys.exit(app.exec_())
最后,我们输入应用程序的主事件循环,事件处理从这里开始。主事件循环从窗口系统接收事件并分发到应用程序的窗口组件上。当主事件循环结束,如果我们调用 exit() 方法或者主窗口组件被销毁。 sys.exit() 方法确保干净的退出。将通知环境应用程序是如何结束的。

QtCore举例:

import PyQt4.QtGui import *  
from PyQt4.QtCore import *  
import sys  
  
app=QtGui.QApplication(sys.argv)  
b=QPushButton("Hello Kitty!")  
b.show()  
app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()"))  
app.exec_()  
第1行导入PyQt4.QtGui的所有类及模块,包括QApplication,所有Qt图形化应用程序都必须包含此文件,它包含了Qt图形化应用程序的各种资源,基本设置,控制流以及事件处理等。

第5行新创建了一个QApplication对象,每个Qt应用程序都必须有且只有一个QApplication对象,采用sys.argv作为参数,便于程序处理命令行参数。

第6行创建了一个QPushButton对象,并设置它的显示文本为“Hello Kitty!”,由于此处并没有指定按钮的父窗体,因此以自己作为主窗口。

第7行调用show()方法,显示此按钮。控件被创建时,默认是不显示的,必须调用show()函数来显示它。

第8行的connect方法是Qt最重要的特征,即信号与槽的机制。当按钮被按下则触发clicked信号,与之相连的QApplication对象的槽quit()响应按钮单击信号,执行退出应用程序的操作。关于信号与槽机制在本实例最后将进行详细的分析。

最后调用QApplication的exec_()方法,程序进入消息循环,等待可能输入进行响应。Qt完成事件处理及显示的工作,并在应用程序退出时返回exec_()的值。
3.4.信号和事件 3.5.一些经验 4.找到你需要的界面配图和代码 实例1 Hello Kitty!

代码链接

实例2 标准对话框的使用

代码链接



实例3 使用标准输入框

代码链接

各种消息框的使用

代码链接


实现QQ抽屉效果

代码链接

表格的使用

代码链接

使用进度条

代码链接

利用Qt Designer设计一个对话框

代码链接



在程序中使用Ui

代码链接

基本布局管理

代码链接

多文档

代码链接

!图片描述

分割窗口

代码链接

停靠窗口

代码链接

堆栈窗口

代码链接

综合布局实例

代码链接

可扩展对话框

代码链接

利用QPalette改变控件颜色

代码链接

窗体的淡入淡出效果

代码链接

不规则窗体

代码链接

电子钟

代码链接

程序启动画面

代码链接

基本QMainWindow主窗口程序

代码链接

打印文本

代码链接

打印图像

代码链接

5.深入一个复杂的例子 6.总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37952.html

相关文章

  • PyQt5 简介

    摘要:是由一系列模块组成。超过个类,函数和方法。有两种证书,和商业证书。包含了窗口系统事件处理图像基本绘画字体和文字类。包含了协议的类。提供了处理数据库的工具。废弃了和的调用方式,使用了新的信号和处理方式。不再支持被标记为废弃的或不建议使用的。 本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支...

    sevi_stuo 评论0 收藏0
  • APP之九大盈利方式

    摘要:随着移动端的用户增大,正式的时代来临,经云度的调查统计近几年数量一致持续上升。而这些不同的组合与变化,正是创业家与开发者得以由其中获利的方式。盈利方式还是有很多的,最主要的是要依据自身产品的优势选择盈利方式  随着移动端的用户增大,正式APP的时代来临,经云度的调查统计近几年APP数量一致持续上升。那APP有哪些盈利方式呢?这或许是很多APP开发者所困惑的问题不过,如果你以为APP经济...

    yankeys 评论0 收藏0
  • 【备战春招/秋招系列】Java程序员必备书单

    摘要:相关推荐,豆瓣评分,人评价本书介绍了在编程中条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。实战高并发程序设计推荐豆瓣评分,书的质量没的说,推荐大家好好看一下。 该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb... 【强烈推荐!非广告!】...

    saucxs 评论0 收藏0
  • Java学习必备书籍推荐终极版!

    摘要:实战高并发程序设计推荐豆瓣评分书的质量没的说,推荐大家好好看一下。推荐,豆瓣评分,人评价本书介绍了在编程中条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。 很早就想把JavaGuide的书单更新一下了,昨晚加今天早上花了几个时间对之前的书单进行了分类和补充完善。虽是终极版,但一定还有很多不错的 Java 书籍我没有添加进去,会继续完善下去。希望这篇...

    Steve_Wang_ 评论0 收藏0
  • 「码个蛋」2017年200篇精选干货集合

    摘要:让你收获满满码个蛋从年月日推送第篇文章一年过去了已累积推文近篇文章,本文为年度精选,共计篇,按照类别整理便于读者主题阅读。本篇文章是今年的最后一篇技术文章,为了让大家在家也能好好学习,特此花了几个小时整理了这些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 让你收获满满! 码个蛋从2017年02月20...

    wangtdgoodluck 评论0 收藏0

发表评论

0条评论

史占广

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<