Comparte esta página

Aprende X en Y minutos

Donde X=PyQt

Qt es un sistema altamente reconocido que permite desarrollar software multiplataforma que puede correr en diferentes entornos de software y hardware con pocos o ningún cambio. Aun así conserva la velocidad y poder de una aplicación nativa. Qt fue originalmente escrito en C++.

Esta es una adaptación de la introducción a QT con C++ por Aleksey Kholovchuk, parte del código ejemplo debería resultar en la misma funcionalidad ¡pero usando python con PyQT!

import sys
from PyQt4 import QtGui

def window():
    # Crear el objeto de la aplicación
    app = QtGui.QApplication(sys.argv)
    # Crear un widget en el que colocaremos nuestra etiqueta
    w = QtGui.QWidget()
    # Agregamos nuestra etiqueta al widget
    b = QtGui.QLabel(w)
    # Agregamos texto a nuestra etiqueta
    b.setText("Hello World!")
    # Fijemos información de posición y tamaño del widget
    w.setGeometry(100, 100, 200, 50)
    b.move(50, 20)
    # Proporcionemos un título a nuestra ventana
    w.setWindowTitle("PyQt")
    # Mostremos todo
    w.show()
    # Ejecutemos lo que hayamos solicitado ya inicializado el resto
    sys.exit(app.exec_())

if __name__ == '__main__':
    window()

Para poder hacer uso de las funciones más avanzades en pyqt necesitamos agregar elementos adicionales. Aquí mostramos cómo introducir una caja de diálogo popup, útil para permitir al usuario confirmar su decisión o para brindarnos información.

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *


def window():
    app = QApplication(sys.argv)
    w = QWidget()
    # Crear un botón y adjuntarlo al widget w
    b = QPushButton(w)
    b.setText("Press me")
    b.move(50, 50)
    # Indicar al botón b que llame esta función cuando reciba un click
    # Nótese la falta de "()" en la llamada de la función
    b.clicked.connect(showdialog)
    w.setWindowTitle("PyQt Dialog")
    w.show()
    sys.exit(app.exec_())

# Esta función debería crear una ventana de diálogo con un botón
# que espera a recibir un click y luego sale del programa
def showdialog():
    d = QDialog()
    b1 = QPushButton("ok", d)
    b1.move(50, 50)
    d.setWindowTitle("Dialog")
    # Esta modalidad le indica al popup que bloquee al padre mientras activo
    d.setWindowModality(Qt.ApplicationModal)
    # Al recibir un click me gustaría que el proceso termine
    b1.clicked.connect(sys.exit)
    d.exec_()

if __name__ == '__main__':
    window()

¿Tienes una sugerencia o rectificación? Abre un issue en el repositorio de GitHub, o haz un pull request tu mismo

Originalmente contribuido por Nathan Hughes, y actualizado por 2 colaboradores.