跳到正文
网络寻租
返回

pyqt介绍

最强大的GUI库 — PyQt4

Authors ~ 机械唯物主义 <linjunhalida@gmai.com>

一个简单的实例

image 代码

image

#!/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()

类层级

QObject
   |----- QWidget
             |----- QDialog
             |----- QLineEdit
             |----- QListWidget

layout

image layout

l = QVBoxLayout(self)
for w in self.leInput, self.lwResult:
    l.addWidget(w)

Signal and Slot in Qt

image Qt和PyQt 事件机制区别

this->connect(leInput, SINGAL(returnPressed()), this, caculate))
self.leInput.returnPressed.connect(self.caculate)

一个复杂的实例: 扫雷

image UI designer

image UI with Code

form, base = uic.loadUiType("score.ui")
class ScoreDlg(QDialog, form):
    def __init__(self):
        super(ScoreDlg, self).__init__()
        self.setupUi(self)

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)

其他强大特性

发布

pyinstaller!

资源


分享这篇文章:

上一篇
所谓的你情我愿
下一篇
reStructuredText介绍

评论

评论通过 GitHub 账号发布,需要先使用 GitHub 登录。