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

被折叠的 条评论
为什么被折叠?



