[Tutorial]Aprendiendo PyQT4 [Parte4]- JaAViEr (0x5d)

Iniciado por 0x5d, 13 Febrero 2012, 02:27 AM

0 Miembros y 1 Visitante están viendo este tema.

0x5d

Hola nuevamente !

En la [Parte3] dejé pendiente hablar sobre como obtener los datos de un QLineEdit(), voy a ir directo al grano :P.

Pondré un ejemplo sencillo, tenemos el QLineEdit():
Código (python) [Seleccionar]
self.input_datos = QtGui.QLineEdit(self)
Entonces para obtener lo que ingresamos, usamos la propiedad .text() acompañada de un str() para que no devuelva el objeto y si el valor:
Código (python) [Seleccionar]
variable = str(self.input_datos.text())

  Entonces solo bastaría poner dicha línea en la función del botón(self.connect):
Código (python) [Seleccionar]

def funcion(self):
  recibo_datos = str(self.input_datos.text())

Y con ello ya tendremos en nuestras manos el valor del QLineEdit() en la variable. Ahora con ella podemos hacer lo mismo que hacemos en nuestros códigos Python normales, a nuestro antojo.

Pero como quedó pendiente en la pasada parte sobre utilizar el valor del QLineEdit() en el QLabel(), con lo que hemos visto ya deberíamos saber hacerlo :D, de todas formas dejaré el código con comentarios :
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys

class Mi_Programa(QtGui.QWidget):
 
  def __init__(self, parent=None):
   
    QtGui.QWidget.__init__(self, parent)
    self.resize(200,134)
    #Creamos los Labels,label_mensaje "Mensaje:", label_resultado el mensaje de "Resultado:"
    #Y el tercero mostrará el texto ingresado.
    self.label_mensaje = QtGui.QLabel("Mensaje:", self)
    self.label_mensaje.setGeometry(3,14,59,17)
    self.label_resultado = QtGui.QLabel("Resultado:", self)
    self.label_resultado.setGeometry(5,80,71,17)
    self.label_show = QtGui.QLabel("",self)
    self.label_show.setGeometry(80,80,111,17)
    #Creamos el QLineEdit para pedir datos
    self.input_datos = QtGui.QLineEdit(self)
    self.input_datos.setGeometry(60,10,113,27)
    #Creamos el Boton
    self.mi_boton = QtGui.QPushButton("Dame Clic", self)
    self.mi_boton.setGeometry(60,40,92,27)
    #Le damos función al botón
    self.connect(self.mi_boton, QtCore.SIGNAL('clicked()'), self.show_message)
   
  def show_message(self):
    mensaje = str(self.input_datos.text())
    self.label_show.setText(mensaje)
aplicacion = QtGui.QApplication(sys.argv)
formulario = Mi_Programa()
formulario.show()
aplicacion.exec_()

Explico un poco:
Al dar clic en el botón, llamamos a la función show_message() en la cual obtendremos el dato de self.input_datos, posteriormente guardamos el valor en la variable mensaje y como ya vimos, usamos setText(mensaje) para darle el nuevo valor al QLabel().

  Supongo que ya no hay temas pendientes con QLineEdit, QLabel, QPushButton :P, veamos el uso de otros Widgets, el siguiente es QPlainTextEdit().

  Como dice su nombre, es para insertar un texto plano, a diferencia del QLineEdit, este es multilíneas.

La manera de utilización es la siguiente :
Código (python) [Seleccionar]
self.texto_plano = QtGui.QPlainTextEdit("", self)
Como ya sabemos, usamos la propiedad setGeometry() para dar posición, ancho y altura.
 
  Para obtener los datos que se insertan en dicho widget, usaremos la propiedad toPlainText(), que es el equivalente al .text() del QLineEdit.

  Para insertar datos en un QPlainTextEdit(), debemos usar setPlainText('Msj').

Un pequeño ejemplo de lo que he escrito en código :
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys

class Mi_Programa(QtGui.QWidget):
 
  def __init__(self, parent=None):
   
    QtGui.QWidget.__init__(self, parent)
    self.resize(400,319) # Tamaño
    #Creamos el primer PlainTextEdit que luego envía los datos al segundo
    self.texto_plano = QtGui.QPlainTextEdit("", self)
    self.texto_plano.setGeometry(10,10,191,271)
    #Creamos el botón
    self.transcribir = QtGui.QPushButton("Transcribir", self)
    self.transcribir.setGeometry(10,285,95,27)
    #Creamos el segundo PlainTextEdit que recibirá el primer contenido
    self.nuevo_txt = QtGui.QPlainTextEdit("", self)
    self.nuevo_txt.setGeometry(206,10,191,271)
    #Le damos la función al botón y llamamos al def transcribe
    self.connect(self.transcribir, QtCore.SIGNAL('clicked()'), self.transcribe)

  def transcribe(self):
    #Obtenemos el contenido del primer QPlainTextEdit
    contenido = self.texto_plano.toPlainText()
    #Escribimos el contenido del primer QPlainTextEdit en el segundo
    #Usando setPlainText
    self.nuevo_txt.setPlainText(contenido)
   
aplicacion = QtGui.QApplication(sys.argv)
formulario = Mi_Programa()
formulario.show()
aplicacion.exec_()



Luego seguiré con el QTextBrowser(), que nos permite ingresar código HTML en el campo de escritura...

Fuente : http://rootcodes.com/tutorialaprendiendo-pyqt4-con-rootcodes-parte4/

Saludos, Javier.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !