lunes, 4 de abril de 2016

QT Designer es una aplicación que nos facilita la creación de GUI, nos permite crear interfaces gráficas de usuario rápidamente mediante el método de arrastrar y soltar, una vez creada se guarda en un archivo .ui en formato XML que puede ser cargado en tiempo de ejecución o convertirse en código Python para generar la GUI.

Al iniciar QT Designer este nos permite crear una GUI partiendo de una de las plantillas que tenemos disponibles, para nuestro ejemplo elegiremos widget de este modo extendemos la clase QWidget.

pyqt
El siguiente paso es arrastrar los controles que necesitemos, en la parte izquierda vemos los distintos controles y layouts disponibles organizamos por categoría, en la parte derecha se encuentran las propiedades del control seleccionado, además de un editor signal / slot que nos permitirá crear manejadores de eventos.

qt diseñador
Creamos una GUI sencilla y la guardamos con el nombre form.ui para generar el código Pyhton haremos lo siguiente:
Abrimos una consola de comandos, Pyhton debe estar en la variable de entorno PATH, y ejecutamos el siguiente comando:
C:\Developer\TEMP>pyuic5.bat -x -o form.py form.ui

El archivo form.ui lo guardamos en la carpeta c:\developer\temp, -x indica que deseamos generar código extra que inicia la aplicación, -o from.py establece el nombre del archivo de salida.
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'form.ui'
#
# Created: Sun Apr  3 17:17:16 2016
#      by: PyQt5 UI code generator 5.3.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 134)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(10, 10, 381, 121))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 2)
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 2)
        self.verticalLayout.addLayout(self.gridLayout)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.verticalLayout.addLayout(self.horizontalLayout)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label_2.setText(_translate("Form", "Contraseña"))
        self.label.setText(_translate("Form", "Nombre"))
        self.pushButton.setText(_translate("Form", "Aceptar"))
        self.pushButton_2.setText(_translate("Form", "Cancelar"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

El código generado es completamente ejecutable.

python code

1 comentario :