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():
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:
variable = str(self.input_datos.text())
Entonces solo bastaría poner dicha línea en la función del botón(self.connect):
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 :
# -*- 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 :
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 :
# -*- 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_()
(http://rootcodes.com/tutorial_qt/qplaintext_ejemplo.png)
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.