浅尝pyqt(1)

本文分享了使用Python和PyQt4进行GUI编程的经验。通过《RapidGUI Programming with Python and Qt》一书的学习,作者介绍了如何利用PyQt4创建简单的用户界面,并分享了一个计算复利金额的程序实例。
无意中看见了这本书《Rapid GUI Programming with Python and Qt》,上网down了一个pdf。里面讲的不算太详细,不过很清晰,不错。
part I 的 python programming 因为以前接触过python, 所以看得比较粗糙。很快就看到part II。

chap4主要是简略展示了下PyQt4的一些部分。应该算是常用的那一部分吧。跟着书本学者写了几段,结合python优美的语法,感觉很舒服。不过由于初学,很多地方概念还不是很深,有些时候还需要跳出书本去其他地方找自己需要的“答案”。这一章最后留下了一道题:


 

书本上的是windows的,我在ubuntu下做了一个:


写代码的过程中还是遇到不少的问题,比如一些函数的格式和返回的类型,然后通过不断的用dir(), help(), type()等函数去慢慢找,虽然效率不高,不过学会不少东西。

#! /usr/bin/pythron
#Filename : Interest.py 
#by Grastyele on 2011 July 29th.
""

import sys
import math
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        pri_label = QLabel("Principal:")
        rat_label = QLabel("Rate:")
        yea_label = QLabel("Yeats:")
        amo_label = QLabel("Amount:")
        self.amount = QLabel("{1}quot;)

        self.pri_box = QDoubleSpinBox()
        self.pri_box.setRange(0, 10000.0)
        self.pri_box.setSingleStep(0.01)
        self.pri_box.setValue(1000.0)
        self.pri_box.setPrefix("{1}quot;)
        self.pri_box.selectAll()

        self.rat_box = QDoubleSpinBox()
        self.rat_box.setRange(0, 100)
        self.rat_box.setSingleStep(0.01)
        self.rat_box.setValue(25)
        self.rat_box.setSuffix("%")
        self.rat_box.selectAll()

        self.yea_box = QComboBox()
        for i in range(0, 12):
            self.yea_box.addItem(repr(i + 1) + " years")

        self.connect(self.pri_box, SIGNAL("valueChanged(double)"), self.updateUi) 
        self.connect(self.rat_box, SIGNAL("valueChanged(double)"), self.updateUi)
        self.connect(self.yea_box, SIGNAL("currentIndexChanged(int)"), self.updateUi)

        layout = QGridLayout()
        layout.addWidget(pri_label, 0, 0, 1, 1);
        layout.addWidget(rat_label, 1, 0, 1, 1);
        layout.addWidget(yea_label, 2, 0, 1, 1);
        layout.addWidget(amo_label, 3, 0, 1, 1);
        layout.addWidget(self.pri_box, 0, 11, 1, 10);
        layout.addWidget(self.rat_box, 1, 11, 1, 10);
        layout.addWidget(self.yea_box, 2, 11, 1, 10);
        layout.addWidget(self.amount, 3, 11, 1, 10);
        self.setLayout(layout)

        self.setWindowTitle("Interest");
        self.updateUi()

    def updateUi(self):
        principal = self.pri_box.value()
        rate = self.rat_box.value()
        year = self.yea_box.currentText().split(QString(' '))
        amounts = principal * (((1 + rate / 100.0)) ** eval(str(year[0])))
        self.amount.setText("$ %0.2f" % amounts)

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()


connect 很强大, 完成消息的传递。 QGridLayout则使得排版起来非常方便。(python太优美了)


先水到这里吧……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值