pyqt学习(5)

来源:互联网 发布:unity3d so 编辑:程序博客网 时间:2024/06/05 05:00

python2.7+pyqt4.8+Qt Designer实现对话框

这里写图片描述
Ui_pen.py:

# -*- coding: utf-8 -*-from PyQt4 import QtCore, QtGuitry:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    def _fromUtf8(s):        return stry:    _encoding = QtGui.QApplication.UnicodeUTF8    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError:    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig)class Ui_Dialog(object):    def setupUi(self, Dialog):        Dialog.setObjectName(_fromUtf8("Dialog"))        Dialog.resize(272, 167)        Dialog.setSizeGripEnabled(True)        self.gridLayout_2 = QtGui.QGridLayout(Dialog)        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))        self.gridLayout = QtGui.QGridLayout()        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))        self.widthLabel = QtGui.QLabel(Dialog)        self.widthLabel.setObjectName(_fromUtf8("widthLabel"))        self.gridLayout.addWidget(self.widthLabel, 0, 0, 1, 1)        self.widthSpinBox = QtGui.QSpinBox(Dialog)        self.widthSpinBox.setObjectName(_fromUtf8("widthSpinBox"))        self.gridLayout.addWidget(self.widthSpinBox, 0, 1, 1, 1)        self.beveledCheckBox = QtGui.QCheckBox(Dialog)        self.beveledCheckBox.setObjectName(_fromUtf8("beveledCheckBox"))        self.gridLayout.addWidget(self.beveledCheckBox, 0, 2, 1, 1)        self.styleLabel = QtGui.QLabel(Dialog)        self.styleLabel.setObjectName(_fromUtf8("styleLabel"))        self.gridLayout.addWidget(self.styleLabel, 1, 0, 1, 1)        self.styleComboBox = QtGui.QComboBox(Dialog)        self.styleComboBox.setObjectName(_fromUtf8("styleComboBox"))        self.styleComboBox.addItem("")        self.styleComboBox.addItem("")        self.styleComboBox.addItem("")        self.styleComboBox.addItem("")        self.styleComboBox.addItem("")        self.gridLayout.addWidget(self.styleComboBox, 1, 1, 1, 2)        self.buttonBox = QtGui.QDialogButtonBox(Dialog)        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))        self.gridLayout.addWidget(self.buttonBox, 2, 2, 1, 1)        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)        self.widthLabel.setBuddy(self.widthSpinBox)        self.styleLabel.setBuddy(self.styleComboBox)        self.retranslateUi(Dialog)        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("clicked(QAbstractButton*)")), Dialog.accept)        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("clicked(QAbstractButton*)")), Dialog.close)        QtCore.QMetaObject.connectSlotsByName(Dialog)    def retranslateUi(self, Dialog):        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))        self.widthLabel.setText(_translate("Dialog", "Width:", None))        self.beveledCheckBox.setText(_translate("Dialog", "Beveled edges", None))        self.styleLabel.setText(_translate("Dialog", "Style:", None))        self.styleComboBox.setItemText(0,_translate("Dialog","Solid",None))        self.styleComboBox.setItemText(1, _translate("Dialog", "Dashed",None))        self.styleComboBox.setItemText(2, _translate("Dialog", "Dotted",None))        self.styleComboBox.setItemText(3, _translate("Dialog", "DashDotted",None))        self.styleComboBox.setItemText(4, _translate("Dialog", "DashDotDotted",None))class Pen(QtGui.QDialog,Ui_Dialog):    def __init__(self,parent=None):        super(Pen,self).__init__(parent)        self.setupUi(self)

formUi.py:

#coding=utf-8from PyQt4 import QtCore, QtGuitry:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    def _fromUtf8(s):        return stry:    _encoding = QtGui.QApplication.UnicodeUTF8    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError:    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig)class Ui_Form(object):    def setupUi(self, Form):        Form.setObjectName(_fromUtf8("Form"))        Form.resize(252, 146)        self.gridLayout = QtGui.QGridLayout(Form)        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))        self.penButton = QtGui.QPushButton(Form)        self.penButton.setObjectName(_fromUtf8("penButton"))        self.gridLayout.addWidget(self.penButton, 0, 0, 1, 1)        self.label = QtGui.QLabel(Form)        self.label.setObjectName(_fromUtf8("label"))        self.gridLayout.addWidget(self.label, 1, 0, 1, 1)        self.retranslateUi(Form)        QtCore.QMetaObject.connectSlotsByName(Form)    def retranslateUi(self, Form):        Form.setWindowTitle(_translate("Form", "Form", None))        self.penButton.setText(_translate("Form", "Set Pen...(Dumb&class)", None))        self.label.setText(_translate("Form", "The Pen has not been set", None))

主程序:有调用主界面formUi,进而显示Ui_pen

#coding=utf-8#文件功能:import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *from Ui_pen import Penfrom formUi import Ui_Formclass Form(QDialog,Ui_Form):    def __init__(self,parent=None):        super(Form,self).__init__(parent)        self.setupUi(self)        self.width=1        self.beveled=False        self.style="Solid"        self.penButton.clicked.connect(self.setPenProperties)        self.updateData()    def updateData(self):        bevel=""        if self.beveled:            bevel="<br>Beveled"        self.label.setText("Width={0}<br>Style={1}{2}".format(self.width,self.style,bevel))    def setPenProperties(self):        pendialog=Pen(self)        pendialog.widthSpinBox.setValue(self.width)        pendialog.beveledCheckBox.setChecked(self.beveled)        pendialog.styleComboBox.setCurrentIndex(            pendialog.styleComboBox.findText(self.style))        if pendialog.exec_():            self.width=pendialog.widthSpinBox.value()            self.beveled=pendialog.beveledCheckBox.isChecked()            self.style=str(pendialog.styleComboBox.currentText())            self.updateData()if __name__=="__main__":    app=QApplication(sys.argv)    dlg=Form()    dlg.show()    sys.exit(app.exec_())

参考:1.《Rapid Gui Programming with Python and Qt》–by Mark Summerfield
2.http://blog.csdn.net/xiaoyangyang20博客

原创粉丝点击