作为一个程序的开发者,我们仅仅需要在相应路径通过命令行就可执行那个程序。但是,不懂行的人不理解这个黑框框的东西,陌生领域任何人都没有安全感,所以他们是拒绝接受一个项目仅仅只是通过一个黑框框来执行的。所以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 Files\Python\Lib\site-packages\PyQt4
打开后如下图
可以在左侧选择相应的按钮,仅仅通过拖拽完成草图界面。
然后通过Pycharm转为.py文件,在Pycharm中单击该.ui文件,然后点击图中选项
3.3.主要类介绍
主要类介绍:QtGui Module
主要有两个包:
QtCore
模块包括了核心的非GUI功能,该模块用来对时间、文件、目录、各种数据类型、流、网址、媒体类型、线程或进程进行处理。
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
基本布局管理
多文档
!图片描述
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。