Curso Python. Volumen XIV: Interfaces Gráficas. Parte V
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.
Via: www.redeszone.net