做为一个程序的开发者,咱们仅仅须要在相应路径经过命令行就可执行那个程序。可是,不懂行的人不理解这个黑框框的东西,陌生领域任何人都没有安全感,因此他们是拒绝接受一个项目仅仅只是经过一个黑框框来执行的。因此GUI窗口呼之而出。html
“Life is short (You need Python)”
-- Bruce Eckelpython
python做为一门快速开发语言,其GUI模块天然也不例外。用python来作GUI的模块、包有:
Tk、wxWidgets、Qt、GTK,本篇文章是学习的是用Qt的PyQt4.(PyQt5只适合Python3.0以上)linux
本篇文章这样安排:
1:简介
2:PyQt4的安装,配合Pycharm的安装
3:PyQt4必定要知道的基础
4:找到你须要的界面配图和代码
5:深刻一个复杂的例子
6:总结spring
PyQt是用来建立GUI应用程序的工具包,它把Python和成功的Qt绑定在一块儿,Qt库是这个星球上最强大的库之一,若是不是最强大的话。PyQt的官方网站是 www.riverbankcomputing.co.uk , 它由 Phil Thompson 开发。
将程序包装在GUI界面里,能够:shell
将输入经过多种途径如文本框、弹出路径选择等输入到程序里。安全
将输出经过文本框显示出来app
将执行信息如如报错信息、运行进度经过文本框或进度条显示出来函数
先介绍PyQt4安装和配合Pycharm的使用。工具
或简要或详细叙述PyQt的必须知道的知识,只有了解、理解、掌握这些才能看懂任何一个PyQt程序代码。布局
配合大量现成的GUI图形界面的图片,你能够与本身脑子里的效果图对应,迅速找到你须要使用众多PyQt类中的哪个,而且有实现代码(引用的)。向下面这样,经过连接,快速找到想要的代码。代码地址
我认为这很是重要,由于做为一个初学者,咱们经常遇到这样的困境:
我大概知道我要完成哪些功能,但我不知道怎么画出来。
我能画出来,但我不知道调用什么类去实现,甚至在GOOGLE上找这个类的时候,都不知道用什>么词汇去描述你的界面,略尴尬。
深刻一个例子,调用本身的脚本配合GUI界面,写出一个能够展现的程序。
总结一下遇到的坑
官网文档: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
基本引用了以上资源里面的文章,特别是来源:Linux社区 做者:chumpklutz和来源:CSDN 做者:翻滚吧挨踢男
基本参考了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.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中一般包括对图形布局的一些改动和结合、添加按钮动做、等等使图形界面'活'起来的方法。
对于这样一个界面:
第一步:设计好界面的草图
这里推荐使用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文件,而后点击图中选项
主要类介绍: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_()的值。
!
图片描述