Curso Python. Volumen XIV: Interfaces Gráficas. Parte V

Escrito por Javier Ceballos Fernández

Bienvenidos un día más al curso de Python, hoy vamos a continuar con las interfaces gráficas creadas con Qt. En el capítulo anterior os enseñamos a crear la interfaz gráfica con el “Qt Designer”. En este capítulo os vamos a explicar cómo utilizar esa interfaz dentro de nuestro código Python. Así que vamos a empezar.

Lo primero que tendremos que hacer es guardar la interfaz que diseñamos en el capítulo anterior, con el nombre “conversor.ui” en la carpeta del proyecto Python que vamos a realizar. Una vez lo tengamos guardado, abrimos nuestro Python IDE y empezamos a escribir el código que nos unirá esta interfaz con la aplicación. Creamos un archivo que se llamará “conversor.py”.

Código

Dentro de nuestro de este archivo necesitaremos el siguiente código:

#!/usr/bin/python
import sys
from PyQt4 import QtCore, QtGui, uic

# Cargar nuestro archivo .ui
form_class = uic.loadUiType("conversor.ui")[0]

class MiVentana(QtGui.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.CtoF_Button.clicked.connect(self.CtoF_Button_click)
        self.FtoC_Button.clicked.connect(self.FtoC_Button_click)

    # Evento del boton btn_CtoF
    def CtoF_Button_click(self):
        cel = float(self.CBox.text())
        fahr = cel * 9 / 5.0 + 32
        self.FBox.setValue(int(fahr + 0.5))

    # Evento del boton btn_FtoC
    def FtoC_Button_click(self):
        fahr = self.FBox.value()
        cel = ((fahr - 32) * 5) / 9
        self.CBox.setText(str(cel))

app = QtGui.QApplication(sys.argv)
Ventana = MiVentana(None)
Ventana.show()
app.exec_()

Análisis del código

Lo primero que hacemos es importar la biblioteca “PyQt” y cargamos el archivo “conversor.ui” que generamos con “Qt Designer”. A continuación creamos la clase “MiVentana” y le pasamos (QtGui.QMainWindow y form_class). El método “__init__” configura la interfaz “GUI”. En esta función tenemos que conectar los controladores de eventos:

self.CtoF_Button.clicked.connect(self.CtoF_Button_click)
self.FtoC_Button.clicked.connect(self.FtoC_Button_click)

La función “connect()” se usa para conectar eventos. Se toma un único parámetro, que es el nombre de la función. Saber que:

  • “CtoF_Button” es el nombre del botón.
  • El método “clicked.connect()” es llamado cuando el botón es presionado.
  • El nombre de la función de controlador de eventos es  “CtoF_Button_click”.

Ahora tendremos que crear las funciones que coincidirán con el nombre que hemos puesto en el método “connect()”: CtoF_Button_click y FtoC_Button_click. Estas funciones las tendremos que definir más tarde en nuestra clase. Por ejemplo:

# Evento del boton btn_CtoF
def CtoF_Button_click(self):
    cel = float(self.CBox.text())
    fahr = cel * 9 / 5.0 + 32
    self.FBox.setValue(int(fahr + 0.5))

En esta función, la variable “cel” captura el valor de nuestro Widget “(CBox)”. Luego en la variable “fahr” se calcula la conversión a grados Fahrenheit y en la última línea se pasa el resultado a nuestro Widget “(FBox)”. Lo mismo sucede con la función “FtoC_Button_click()”.

Al ejecutar el código se puede observar que el “FBox” tiene un mínimo y un máximo “(0 – 99)”. Esto se ha creado de tal manera que no va a hacer falta poner dos campos de texto, pero esta condición se puede cambiar si nos apetece probar con otro funcionamiento.

Al final del código, necesitaremos iniciar la interfaz gráfica:

app = QtGui.QApplication(sys.argv)
Ventana = MiVentana(None)
Ventana.show()
app.exec_()

Esto es todo por hoy, espero que este método de crear interfaces gráficas os haya resultado más sencillo. Recordar a todos los que se acaban de unirse al curso que tienen un índice del curso, ya que nunca es tarde para empezar.

Últimos análisis

Valoración RZ
9
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
10
Valoración RZ
8