pyqt介绍
最强大的GUI库 -- PyQt4
| Authors: | 机械唯物主义 <linjunhalida@gmai.com> |
|---|---|
| Date: | 2010-11-09 |
PyQt4是我见到过的最好用的GUI开发库, 具体不多讲, 直接上例子.
Contents
代码
这个是计算器的代码:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Caculator(QDialog):
def __init__(self):
super(Caculator, self).__init__()
#widgets
self.leInput = QLineEdit()
self.lwResult = QListWidget()
#layouts
l = QVBoxLayout(self)
for w in self.leInput, self.lwResult:
l.addWidget(w)
#events
self.leInput.returnPressed.connect(self.caculate)
def caculate(self):
data = unicode(self.leInput.text())
if not data: return
self.leInput.clear()
try:
result = unicode(eval(data))
except Exception as e:
result = unicode(e)
self.lwResult.addItem(result)
def main():
app = QApplication([])
Caculator().exec_()
if __name__=="__main__":
main()
layout
层级:
QDialog (QVBoxLayout) |----- QLineEdit |----- QListWidget代码:
l = QVBoxLayout(self)
for w in self.leInput, self.lwResult:
l.addWidget(w)
Qt和PyQt 事件机制区别
- Qt:
this->connect(leInput, SINGAL(returnPressed()), this, caculate))
- PyQt:
self.leInput.returnPressed.connect(self.caculate)
pyqt比qt要简单得多, pythonic!
一个复杂的实例: 扫雷
- 花费时间: 2个晚上, 基础:2.5小时, 一点点提升:1小时
- 扫雷下载: pyqtmine
上面是基础的一些概念, 我们深入一些, 看看更复杂的例子. 比如一个扫雷的程序(其实也很简单)
UI with Code
form, base = uic.loadUiType("score.ui")
class ScoreDlg(QDialog, form):
def __init__(self):
super(ScoreDlg, self).__init__()
self.setupUi(self)
写好score.ui之后, 需要补充后面的逻辑, 把ui转换成class, 然后继承就好了.
Event
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
...
def paintEvent(self, event=None):
p = QPainter(self)
...
p.drawLine(mx+i*sx, my, mx+i*sx, my+y*sy)
不是所有的时间机制都可以用signal&slot解决的, 有些事件, 只能通过重载来解决. 比如上面鼠标和画图事件, 必须重载对应的处理函数.
其他强大特性
作为一款现代的工业级别的图形库, 是还有其他非常多的特性的, 这里给出一个大致的列表:
- 足够多和好用的控件/自定控件/整合到designer中
- webkit/script支持
- 强大/方便/快速的绘图控件
- 富文本/文本解析
- 多国语言支持
- 其他第三方控件支持: pyqwt
具体有个展示的工具, 如果你安装了qt的话, 可以执行qtdemo, 看看就知道qt能干什么事情了, 并且可以从里面挖出代码来作为参考.
资源
- PyQt安装
ubuntu:
sudo apt-get install pyqt4-dev-toolswindows可以下载一个python包: pythonxy
- 学习材料
- qt 以及 pyqt 官方网站
- 书籍请google: pyqt book or qt book
- 中文资料: qteverywhere
建立时间: 2010/11/10 08:59:00
更新时间: 2010/11/25 13:59:00
blog comments powered by Disqus