pyqt是qt在python中的使用。就是利用python,引用qt的图形库,进行快速的界面开发。
pyqt本身有个designer,是从qt里延伸出来的,可以快速设计界面。因为一些部件没有安装,现在还用不了。
不过qt一样可以通过程序来写界面。下面就是一个例子
pyqt本身有个designer,是从qt里延伸出来的,可以快速设计界面。因为一些部件没有安装,现在还用不了。
不过qt一样可以通过程序来写界面。下面就是一个例子
mport sys from PyQt4 import QtCore, QtGui class FindDialog(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.label_layer = QtGui.QLabel(self.tr(" Layer ")) self.lineedit_layer = QtGui.QLineEdit() self.label_layer.setBuddy(self.lineedit_layer) self.label_field = QtGui.QLabel(self.tr(" Field ")) self.lineedit_field = QtGui.QLineEdit() self.label_field.setBuddy(self.lineedit_field) self.label = QtGui.QLabel(self.tr(" Find: ")) self.lineEdit = QtGui.QLineEdit() self.label.setBuddy(self.lineEdit) self.caseCheckBox = QtGui.QCheckBox(self.tr("Match &case")) self.fromStartCheckBox = QtGui.QCheckBox(self.tr("Search from &start")) self.fromStartCheckBox.setChecked(True) self.findButton = QtGui.QPushButton(self.tr("&Find")) self.findButton.setDefault(True) self.closeButton = QtGui.QPushButton(self.tr("Close")) self.moreButton = QtGui.QPushButton(self.tr("&More")) self.moreButton.setCheckable(True) self.moreButton.setAutoDefault(False) self.extension = QtGui.QWidget() self.wholeWordsCheckBox = QtGui.QCheckBox(self.tr("&Whole words")) self.backwardCheckBox = QtGui.QCheckBox(self.tr("Search &backward")) self.searchSelectionCheckBox = QtGui.QCheckBox(self.tr("Search se&lection")) self.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("close()")) self.connect(self.moreButton, QtCore.SIGNAL("toggled(bool)"), self.extension, QtCore.SLOT("setVisible(bool)")) extensionLayout = QtGui.QVBoxLayout() extensionLayout.setMargin(0) extensionLayout.addWidget(self.wholeWordsCheckBox) extensionLayout.addWidget(self.backwardCheckBox) extensionLayout.addWidget(self.searchSelectionCheckBox) self.extension.setLayout(extensionLayout) botLayout = QtGui.QHBoxLayout() midLayout = QtGui.QHBoxLayout() topLayout = QtGui.QHBoxLayout() botLayout.addWidget(self.label) botLayout.addWidget(self.lineEdit) topLayout.addWidget(self.label_layer) topLayout.addWidget(self.lineedit_layer) midLayout.addWidget(self.label_field) midLayout.addWidget(self.lineedit_field) leftLayout = QtGui.QVBoxLayout() leftLayout.addLayout(topLayout) leftLayout.addLayout(midLayout) leftLayout.addLayout(botLayout) leftLayout.addWidget(self.caseCheckBox) leftLayout.addWidget(self.fromStartCheckBox) leftLayout.addStretch(1) rightLayout = QtGui.QVBoxLayout() rightLayout.addWidget(self.findButton) rightLayout.addWidget(self.closeButton) rightLayout.addWidget(self.moreButton) rightLayout.addStretch(1) mainLayout = QtGui.QGridLayout() mainLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) mainLayout.addLayout(leftLayout, 0, 0) mainLayout.addLayout(rightLayout, 0, 1) # mainLayout.addWidget(self.extension, 1, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle(self.tr("Extension")) self.extension.hide()QLabel就是生成一个新的label,其他类似。
botLayout = QtGui.QHBoxLayout()QHBoxLayout应该就是一个横向(H)的输出box,把控件加入在里面就是在里面显示。
QVBoxLayout就应该是竖着的。
botLayout addwidget,在放入mainLayout
mainLayout放入这个dialog里面。实际是就是一个层层放入到设计方法。
可以比较快的通过代码来实现界面。实现界面后,需要做的是将控件的事件和函数绑在一起。
需要做的就是利用
self.connect(self.integerButton, QtCore.SIGNAL("clicked()"), self.setInteger)
就是将一个事件和函数绑定起来。
这里就是将integerButton和setInteger函数绑定起来,响应clicked()这个方法。
当这个button被点击,setInteger函数就会被调用。