现在的位置: 首页 > 综合 > 正文

pyqt的使用(1)

2013年12月10日 ⁄ 综合 ⁄ 共 3137字 ⁄ 字号 评论关闭
 pyqt是qt在python中的使用。就是利用python,引用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函数就会被调用。

抱歉!评论已关闭.