PyQT学习记录(一)

资源来源于GUI Programming with Python: QT Edition,记录一些学习PyQT的笔记。

什么是PyQT?
PyQT就是 Python+Qt。Qt是一个在linux世界里比较流行的一个图形开发库,用C++实现,另一个比较有名的图形开发库是GTK。PyQT主要是一个Qt的Python接口实现。

如何来开发PyQT?
Eric Python IDE + Qt3 Designer。Eric是Python的利器,目前我使用中的缺陷是调不出中文输入,文件编码格式不支持gbk,所以在输出控制上需要转换为utf8。Qt3 Designer是一个所见即所得的GUI部署工具,类似于VB的图形开发,拖动鼠标即可把GUI界面搭建起来,其比Glade的优势在于可以鼠标定位,Glade主要是开发Gnome界面,Qt3 Designer主要是开发KDE界面,当然在Gnome中运行也是没有问题的。如何快速结合Eric和Qt3来进行图形开发,可以参考这篇文章

入门: “Hello World”


#
# hello1.py
#
import sys
from qt import *
app=QApplication(sys.argv)
button=QPushButton("Hello World", None)
app.setMainWidget(button)
button.show()
app.exec_loop()


运行效果如下图所示:
2007-02-15-124957_582x438_scrot

以下对如上代码加以解释:
(4)sys包的作用是为了能让QApplication类获得可选的命令行参数。比如
python hello.py -style=platinum
那么-style=platinum的作用将使窗口有一个新的look and feel。
(5)为了使用qt中所有的类,本示例中等价于:

from qt import QApplication
from qt import QPushButton

(6)加载了必要的包以后,首先需要创建一个qt工程对象。这个对象用来接受处理所有鼠标和键盘向工程组件(widgets)发送的事件,一般只需要创建一个QApplication就可以了。
(7)利用QPushButton创建了一个按钮对象,一个参数是按钮的caption(按钮上的显示名),第二个参数比较难理解,在QT的layout布局中,所有的组件可以组成一棵树,节点有parent和child。本例中button没有parent,所以设为None
(8)这句话的意思是告诉QApplication,button是一个主组件。
(9)显示button
(10)在application的loop事件被调用之前,界面上不会出现任何东西。