一、父与子
在PyQt中,父与子的关系表示界面对象的从属关系,也就是定义为父对象的拥有子对象的界面。在最顶层的界面中,在其初始化过程中,parent通常为none,然后再用super来初始化。如下程序:
class Form(QDialog):
def
__init__(self, parent=None):
super(Form,
self).__init__(parent)
date = self.getdata() rates =
sorted(self.rates.keys())
dateLabel =
QLabel(date)
self.fromComboBox =
QComboBox()
self.fromComboBox.addItems(rates)
self.fromSpinBox =
QDoubleSpinBox()
self.fromSpinBox.setRange(0.01, 10000000.00)
self.fromSpinBox.setValue(1.00)
self.toComboBox =
QComboBox()
self.toComboBox.addItems(rates)
self.toLabel =
QLabel("1.00")
二、信号和槽
在PyQt中,第二个比较重要的概念是信号和槽。信号是指GUI的界面发生改变,如鼠标单击界面、界面某个控件的属性发生变化等等。槽是指界面改变引发的变化,这种变化通常是函数或者方法。信号和槽之间使用connect函数连接。如下:
self.connect(self.toComboBox,
SIGNAL("currentIndexChanged(int)"), self.updateUi)
self.connect(self.fromSpinBox, SIGNAL("valueChanged(double)"),
self.updateUi)
self.setWindowTitle("Currency")
槽为updateUi函数,该函数定义如下:
def
updateUi(self):
to =
unicode(self.toComboBox.currentText())
from_ =
unicode(self.fromComboBox.currentText())
amount =
(self.rates[from_] / self.rates[to]) * \ self.fromSpinBox.value()
self.toLabel.setText("%0.2f" %
amount)
三、整个GUI设置好后的启动
界面通常定义为类,它包含了各种控件和方法。需要对其启动,语句如下:
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()