Sunteți pe pagina 1din 67

Tipo cadenas de caracteres

Las cadenas de caracteres, son secuencias inmutables que contienen caracteres


encerrado entre comillas.

3.8.1. Cadenas cortas


Son caracteres encerrado entre comillas simples (') o dobles (").

>>> 'Hola Mundo'

'Hola Mundo'

3.8.2. Cadenas largas


Son caracteres encerrados entre grupo comillas triples simples (''') o dobles ("""),
están son generalmente son referenciadas como cadenas de triple comillas.

>>> """Clase que representa una Persona"""

'Clase que representa una Persona'

>>> '''Clase que representa un Supervisor'''

'Clase que representa un Supervisor'

3.8.3. Clases
A continuación, una lista de clases integradas Python para los tipos de cadenas de
caracteres:

3.8.3.1. basestring
Es la clase base de las clases str y unicode.

3.8.3.2. str
Son secuencias inmutables de cadenas de caracteres con soporte a caracteres ASCII.

>>> 'Hola Mundo'

'Hola Mundo'

>>> "Hola Mundo"

'Hola Mundo'

3.8.3.3. unicode
Son secuencias inmutables de cadenas de caracteres con soporte a caracteres Unicode.

>>> u'Jekechitü'

u'Jekechit\xfc'

3.8.4. Prefijo de cadenas


Una cadena puede estar precedida por el carácter:

 r/ R,el cual indica, que se trata de una cadena raw (del inglés, cruda). Las
cadenas raw se distinguen de las normales en que los caracteres escapados
mediante la barra invertida (\) no se sustituyen por sus contrapartidas. Esto es
especialmente útil, por ejemplo, para usar las expresiones regulares.

 >>> raw = r"\t\nHola Plone\n"

 >>> type(raw)

 <type 'str'>

 u/ U, el cual indica, que se trata de una cadena que utiliza codificación unicode.

 >>> saber_mas = u"Atüjaa oo'omüin..."

 >>> type(saber_mas)

 <type 'unicode'>

 >>> vocales = U"äóè"


 >>> type(vocales)

 <type 'unicode'>

3.8.5. Cadenas de escape


Para escapar caracteres dentro de cadenas de caracteres se usa el carácter \ seguido de
cualquier carácter ASCII.

Secuencia
Significado
Escape
\newline Ignorado
\\ Backslash (\)
\' Comillas simple (')
\" Comillas doble (")
\a Bell ASCII (BEL)
\b Backspace ASCII (BS)
\f Formfeed ASCII (FF)
\n Linefeed ASCII (LF)
\N{name} Carácter llamado name en base de datos Unicode (Solo Unicode)
\r Carriage Return ASCII (CR)
\t Tabulación Horizontal ASCII (TAB)
\uxxxx Carácter con valor hex 16-bit xxxx (Solamente Unicode). Ver hex.

\Uxxxxxxxx
Carácter con valor hex 32-bit xxxxxxxx (Solamente Unicode).
Ver hex.
\v Tabulación Vertical ASCII (VT)
\ooo Carácter con valor octal ooo. Ver octal.
\xhh Carácter con valor hex hh. Ver hex.

También es posible encerrar una cadena entre triples comillas (simples o dobles). De
esta forma puede escribir el texto en varias líneas, y al imprimir la cadena, se
respetarán los saltos de línea que se introdujeron sin tener que recurrir a los carácteres
escapados y las comillas como los anteriores.
3.8.6. Operaciones
Las cadenas también admiten operadores aritméticos como los siguientes:

 El operador suma para realizar concatenación de cadenas de caracteres:

 >>> a, b = "uno", "dos"

 >>> a + b

 'unodos'

 El operador multiplicación para repetir la cadena de caracteres por N veces


definidas en la multiplicación:

 >>> c = "tres"

 >>> c * 3

 'trestrestres'

 El operador modulo usado la técnica de interpolación variables dentro de una


cadena de caracteres. Más información consulte la sección formateo %.

3.8.7. Comentarios
Son cadenas de caracteres las cuales constituyen una ayuda esencial tanto para quien
está desarrollando el programa, como para otras personas que lean el código.

Los comentarios en el código tienen una vital importancia en el desarrollo de todo


programa, algunas de las funciones más importantes que pueden cumplir los
comentarios en un programa, son:

 Brindar información general sobre el programa.


 Explicar qué hace cada una de sus partes.
 Aclarar y/o fundamentar el funcionamiento de un bloque específico de código,
que no sea evidente de su propia lectura.
 Indicar cosas pendientes para agregar o mejorar.
El signo para indicar el comienzo de un comentario en Python es el carácter
numeral #, a partir del cual y hasta el fin de la línea, todo se considera un comentario
y es ignorado por el intérprete Python.

>>> # comentarios en linea

...

>>>

El carácter # puede estar al comienzo de línea (en cuyo caso toda la línea será
ignorada), o después de finalizar una instrucción válida de código.

>>> # Programa que calcula la sucesión

... # de números Fibonacci

...

>>> # se definen las variables

... a, b = 0, 1

>>> while b < 100: # mientras b sea menor a 100 itere

... print b,

... a, b = b, a + b # se calcula la sucesión Fibonacci

...

1 1 2 3 5 8 13 21 34 55 89

3.8.7.1. Comentarios multilínea


Python no dispone de un método para delimitar bloques de comentarios de varias
líneas.

Al igual que los comentarios de un sola linea, son cadenas de caracteres, en este caso
van entre triples comillas (simples o dobles), esto tiene el inconveniente que, aunque
no genera código ejecutable, el bloque delimitado no es ignorado por el intérprete
Python, que crea el correspondiente objeto de tipo cadena de caracteres.
>>> """comentarios en varias lineas"""

'comentarios en varias lineas'

>>> '''comentarios en varias lineas'''

'comentarios en varias lineas'

A continuación, una comparación entre comentarios multilínea y comentarios en solo


una linea:

>>> # Calcula la sucesión

... # de números Fibonacci

...

>>> """Calcula la sucesión

... de números Fibonacci"""

'Calcula la sucesi\xc3\xb3n \nde n\xc3\xbameros Fibonacci'

Entonces existen al menos dos (02) alternativas para introducir comentarios


multilínea son:

 Comentar cada una de las líneas con el carácter #: en general todos los editores
de programación y entornos de desarrollo (IDEs) disponen de mecanismos que
permiten comentar y descomentar fácilmente un conjunto de líneas.
 Utilizar triple comillas (simples o dobles) para generar una cadena multilínea: si
bien este método es aceptado.

A continuación, un ejemplo de Comentarios multilínea y de solo una linea:

>>> u"""Calcula la sucesiónde números Fibonacci"""

u'Calcula la sucesi\xf3nde n\xfameros Fibonacci'

>>> # se definen las variables

... a, b = 0, 1

>>> while b < 100:

... print b,
... # se calcula la sucesión Fibonacci

... a, b = b, a + b

...

1 1 2 3 5 8 13 21 34 55 89

Los comentarios multilínea usado con mucha frecuencia como en las varias sintaxis
Python como comentarios de documentación a continuación se listan las sintaxis más
comunes:

 Módulos.
 Funciones.
 Clases.
 Métodos.

3.8.8. Docstrings
En Python todos los objetos cuentan con una variable especial llamada __doc__,
gracias a la cual puede describir para qué sirven los objetos y cómo se usan. Estas
variables reciben el nombre de docstrings, o cadenas de documentación.

Ten en cuenta, una buena documentación siempre dará respuesta a las dos preguntas:

 ¿Para qué sirve?


 ¿Cómo se utiliza?

3.8.8.1. Funciones
Python implementa un sistema muy sencillo para establecer el valor de
las docstrings en las funciones, únicamente tiene que crear un comentario en la
primera línea después de la declaración.

>>> def hola(arg):

... """El docstring de la función"""

... print "Hola", arg, "!"


...

>>> hola("Plone")

Hola Plone !

Puede puede consultar la documentación de la función hola() debe utilizar la


función integrada help() y pasarle el argumento del objeto de función hola():

>>> help(hola)

Help on function hola in module __main__:

hola(arg)

El docstring de la función

>>>

>>> print hola.__doc__

El docstring de la función

3.8.8.2. Clases y métodos


De la misma forma puede establecer la documentación de la clase después de la
definición, y de los métodos, como si fueran funciones:

>>> class Clase:

...

... """El docstring de la clase"""

... def __init__(self):

... """El docstring del método constructor de clase"""

...
... def metodo(self):

... """El docstring del método de clase"""

...

>>> o = Clase()

>>> help(o)

Help on instance of Clase in module __main__:

class Clase

| El docstring de la clase

| Methods defined here:

| __init__(self)

| El docstring del método constructor de clase

| metodo(self)

| El docstring del método de clase

>>> o.__doc__

'El docstring de la clase'

>>> o.__init__.__doc__

'El docstring del método constructor de clase'

>>> o.metodo.__doc__
'El docstring del método de clase'

3.8.8.3. Scripts y módulos


Cuando tiene un script o módulo, la primera línea del mismo hará referencia
al docstrings del módulo, en él debe explicar el funcionamiento del mismo:

En el archivo mi_modulo.py debe contener el siguiente código:

"""El docstring del módulo"""

def despedir():

"""El docstring de la función despedir"""

print "Adiós! desde función despedir() del módulo prueba"

def saludar():

"""El docstring de la función saludar"""

print "Hola! desde función saludar() del módulo prueba"

Entonces, usted debe importar el módulo anterior, para consultar la documentación


del módulo mi_modulo debe utilizar la función integrada help() y pasarle el argumento
el nombre de módulo mi_modulo, de la siguiente manera:

>>> import mi_modulo

>>> help(mi_modulo)

Help on module mi_modulo:

NAME

mi_modulo - El docstring del módulo


FUNCTIONS

despedir()

El docstring de la función despedir

saludar()

El docstring de la función saludar

También puede consultar la documentación de la función despedir() dentro del


módulo mi_modulo, usando la función integrada help() y pasarle el argumento el
formato nombre_modulo.nombre_funcion, es decir, mi_modulo.despedir, de la siguiente
manera:

>>> help(mi_modulo.despedir)

Help on function despedir in module mi_modulo:

despedir()

El docstring de la función despedir

Opcionalmente , usted puede listar las variables y funciones del módulo con la
función dir(), de la siguiente manera:

>>> dir(mi_modulo)

['__builtins__',

'__cached__',

'__doc__',

'__file__',

'__loader__',

'__name__',

'__package__',
'__spec__',

'despedir',

'saludar']

Como puede apreciar, muchas de estas variables son especiales, puede comprobar sus
valores:

>>> print mi_modulo.__name__ # Nombre del módulo

'mi_modulo'

>>> print mi_modulo.__doc__ # Docstring del módulo

'El docstring del módulo'

>>> print mi_modulo.__package__ # Nombre del paquete del módulo

3.8.9. Formateo de cadenas


Python soporta múltiples formas de formatear una cadena de caracteres. A
continuación se describen:

3.8.9.1. Formateo %
El carácter modulo % es un operador integrado en Python. Ese es conocido como el
operador de interpolación. Usted necesitará proveer el % seguido por el tipo que
necesita ser formateado o convertido. El operador % entonces substituye la frase
‘%tipodato’ con cero o mas elementos del tipo de datos especificado:

>>> tipo_calculo = "raíz cuadrada de dos"

>>> valor = 2**0.5

>>> print "el resultado de %s es %f" % (tipo_calculo, valor)

el resultado de raíz cuadrada de dos es 1.414214

También aquí se puede controlar el formato de salida. Por ejemplo, para obtener el
valor con 8 dígitos después de la coma:
>>> tipo_calculo = "raíz cuadrada de dos"

>>> valor = 2**0.5

>>> print "el resultado de %s es %.8f" % (tipo_calculo, valor)

el resultado de raíz cuadrada de dos es 1.41421356

Con esta sintaxis hay que determinar el tipo del objeto:

 %c = str, simple carácter.


 %s = str, cadena de carácter.
 %d = int, enteros.
 %f = float, coma flotante.
 %o = octal.
 %x = hexadecimal.

A continuación un ejemplo por cada tipo de datos:

>>> print "CMS: %s, ¿Activar S o N?: %c" % ("Plone", "S")

CMS: Plone, ¿Activar S o N?: S

>>> print "N. factura: %d, Total a pagar: %f" % (345, 658.23)

N. factura: 345, Total a pagar: 658.230000

>>> print "Tipo Octal: %o, Tipo Hexadecimal: %x" % (027, 0x17)

Tipo Octal: 27, Tipo Hexadecimal: 17

3.8.9.2. Clase formatter


formatter es una de las clases integradas string. Ese provee la habilidad de hacer
variable compleja de substituciones y formateo de valores usando el método format().
Es le permite crear y personalizar sus propios comportamientos de formatos de cadena
de caracteres para reescribir los métodos públicos y contiene: format(), vformat().
Ese tiene algunos métodos que son destinado para ser remplazados por las sub-
clases: parse(), get_field(), get_value(), check_unused_args(), format_field() y
convert_field().
3.8.9.2.1. format()
Este método devuelve una versión formateada de una cadena de caracteres, usando
substituciones desde argumentos args y kwargs. Las substituciones son identificadas
entre llaves { } dentro de la cadena de caracteres (llamados campos de formato), y son
sustituidos en el orden con que aparecen como argumentos de format(), contando a
partir de cero (argumentos posicionales).

Esto es una forma más clara y elegante es referenciar objetos dentro de la misma
cadena, y usar este método para sustituirlos con los objetos que se le pasan como
argumentos.

>>> tipo_calculo = "raíz cuadrada de dos"

>>> valor = 2**0.5

>>> print "el resultado de {} es {}".format(tipo_calculo, valor)

el resultado de raíz cuadrada de dos es 1.41421356237

También se puede referenciar a partir de la posición de los valores utilizando índices:

>>> tipo_calculo = "raíz cuadrada de dos"

>>> valor = 2**0.5

>>> print "el resultado de {0} es {1}".format(tipo_calculo, valor)

el resultado de raíz cuadrada de dos es 1.41421356237

Los objetos también pueden ser referenciados utilizando un identificador con una
clave y luego pasarla como argumento al método:

>>> tipo_calculo = "raíz cuadrada de dos"

>>> print "el resultado de {nombre} es {resultado}".format(

... nombre=tipo_calculo, resultado=2**0.5)

el resultado de raíz cuadrada de dos es 1.41421356237

Formateo avanzado
Este método soporta muchas técnicas de formateo, aquí algunos ejemplos:

Alinear una cadena de caracteres a la derecha en 30 caracteres, con la siguiente


sentencia:

>>> print "{:>30}".format("raíz cuadrada de dos")

raíz cuadrada de dos

Alinear una cadena de caracteres a la izquierda en 30 caracteres (crea espacios a la


derecha), con la siguiente sentencia:

>>> print "{:30}".format("raíz cuadrada de dos")

raíz cuadrada de dos

Alinear una cadena de caracteres al centro en 30 caracteres, con la siguiente sentencia:

>>> print "{:^30}".format("raíz cuadrada de dos")

raíz cuadrada de dos

Truncamiento a 9 caracteres, con la siguiente sentencia:

>>> print "{:.9}".format("raíz cuadrada de dos")

raíz cua

Alinear una cadena de caracteres a la derecha en 30 caracteres con truncamiento de 9,


con la siguiente sentencia:

>>> print "{:>30.9}".format("raíz cuadrada de dos")

raíz cua

Formateo por tipo

Opcionalmente se puede poner el signo de dos puntos después del número o nombre,
y explicitar el tipo del objeto:

 s para cadenas de caracteres (tipo str).


 d para números enteros (tipo int).
 f para números de coma flotante (tipo float).
Esto permite controlar el formato de impresión del objeto. Por ejemplo, usted puede
utilizar la expresión .4f para determinar que un número de coma flotante (f) se
imprima con cuatro dígitos después de la coma (.4).

>>> tipo_calculo = "raíz cuadrada de dos"

>>> valor = 2**0.5

>>> print "el resultado de {0} es {resultado:.4f}".format(

... tipo_calculo, resultado=valor)

el resultado de raíz cuadrada de dos es 1.4142

Formateo de números enteros, rellenados con espacios, con las siguientes sentencias:

>>> print "{:4d}".format(10)

10

>>> print "{:4d}".format(100)

100

>>> print "{:4d}".format(1000)

1000

Formateo de números enteros, rellenados con ceros, con las siguientes sentencias:

>>> print "{:04d}".format(10)

0010

>>> print "{:04d}".format(100)

0100

>>> print "{:04d}".format(1000)

1000

Formateo de números flotantes, rellenados con espacios, con las siguientes sentencias:

>>> print "{:7.3f}".format(3.1415926)


3.142

>>> print "{:7.3f}".format(153.21)

153.210

Formateo de números flotantes, rellenados con ceros, con las siguientes sentencias:

>>> print "{:07.3f}".format(3.1415926)

003.142

>>> print "{:07.3f}".format(153.21)

153.210

3.8.10. Convertir a cadenas de caracteres


Para convertir a tipos cadenas de caracteres debe usar la función str() la cual esta
integrada en el interprete Python.

Truco
Para más información consulte las funciones integradas para operaciones en cadenas de
caracteres.

3.8.11. Ejemplos
A continuación, se presentan algunos ejemplos de su uso:

Ejemplo de cadenas de caracteres con comillas simples

cadena1 = 'Texto entre comillas simples,'

print cadena1, type(cadena1)

Ejemplo de cadenas de caracteres con comillas dobles

cadena2 = "Texto entre comillas dobles,"


print cadena2, type(cadena2)

Ejemplo de cadenas de caracteres con código escapes

cadena3 = 'Texto entre \n\tcomillas simples,'

print cadena3, type(cadena3)

Ejemplo de cadenas de caracteres con varias lineas

cadena4 = """Texto linea 1

linea 2

linea 3

linea 4

linea N"""

print cadena4 + ",", type(cadena4)

Ejemplo operadores de repetición de cadenas de caracteres

cadena5 = "Cadena" * 3

print cadena5 + ",", type(cadena5)

Ejemplo operadores de concatenación de cadenas de caracteres

nombre, apellido = "Leonardo", "Caballero"

nombre_completo = nombre + " " + apellido

print nombre_completo + ",", type(nombre_completo)


Ejemplo de medir tamaño de la cadena con función “len()”

print "El tamaño de la cadena es:", len(nombre_completo)

Ejemplo de acceder a rango de la cadena

print "Acceso a rango de cadena: '", nombre_completo[3:13]

Ejemplo de consulta de ayuda a la función len

>>> help(len)

Help on built-in function len in module __builtin__:

len(...)

len(object) -> integer

Return the number of items of a sequence or collection.

Ejemplo de consulta de ayuda a la clase int

>>> help(int)

Help on class int in module __builtin__:

class int(object)

| int(x=0) -> int or long

| int(x, base=10) -> int or long

| Convert a number or string to an integer, or return 0 if no


arguments
| are given. If x is floating point, the conversion truncates
towards zero.

| If x is outside the integer range, the function returns a long


instead.

Ejemplo de consulta de ayuda del módulo

>>> import datetime

>>> help(datetime)

Help on built-in module datetime:

NAME

datetime - Fast implementation of the datetime type.

FILE

(built-in)

CLASSES

__builtin__.object

date

datetime

3.8.12. Ayuda integrada


Usted puede consultar toda la documentación disponible sobre las cadenas de
caracteres desde la consola interactiva de la siguiente manera:

>>> help(str)
Para salir de esa ayuda presione la tecla q.

Usted puede consultar toda la documentación disponible sobre las cadenas de


caracteres unicode desde la consola interactiva de la siguiente manera:

>>> help(unicode)

Para salir de esa ayuda presione la tecla q.

Importante
Usted puede descargar el código usado en esta sección haciendo clic aquí.

Truco
Para ejecutar el código tipo_cadenas.py, abra una consola de comando, acceda al
directorio donde se encuentra el mismo, y ejecute el siguiente comando:

python tipo_cadenas.py

Ejemplos De La GUI De Python (Tutorial De


Tkinter)
2018-01-22 Comments(20)
Twittear
Pin
Compartir
Compartir
Compartir
En este tutorial, aprenderemos a desarrollar interfaces gráficas de usuario (GUI
del inglés Graphics User Interfaces) escribiendo algunos ejemplos de la GUI de
Python usando el paquete Tkinter.

El paquete Tkinter está incluido en Python como un paquete estándar, por lo que
no es necesario instalar nada para usarlo.
El paquete Tkinter es un paquete muy poderoso. Si ya ha instalado Python, puede
usar IDLE, que es el IDE integrado que se envía con Python. Este IDE se ha
escrito utilizando Tkinter. ¡Suena grandioso!

Usaremos Python 3.6, por lo que si está utilizando Python 2.x, se recomienda
encarecidamente que cambie a Python 3.x a menos que sepa los cambios en el
lenguaje para que pueda ajustar el código y se ejecute sin errores.Aprende a
desarrollar aplicaciones de GUI utilizando el paquete Python Tkinter. En este
tutorial, aprenderás cómo crear interfaces gráficas escribiendo ejemplos de GUI
de Python

Asumo que tienes conocimientos de Python básico que te ayudará a entender lo


que estamos haciendo.
Comenzaremos por crear una ventana, luego aprenderemos cómo
agregar widgets como botones, cuadros combinados, etc., luego
jugaremos con sus propiedades. Así que comencemos.
Table of Contents [hide]
 1 Crear tu primera aplicación GUI
 2 Crear un widget label (etiqueta)
o 2.1 Establecer tamaño de fuente de etiqueta
o 2.2 Establecer el tamaño de una ventana
 3 Agregar un widget button
o 3.1 Cambiar los colores de fondo y primer plano de un botón
o 3.2 Manejar el evento click de un botón
 4 Entrada de datos usando la clase Entry (Tkinter textbox)
o 4.1 Establecer el foco en el widget de entrada
o 4.2 Deshabilitar el widget de entrada
 5 Agregar un widget combobox
 6 Agregar un widget Checkbutton (Tkinter checkbox)
o 6.1 Establecer el estado de un Checkbutton
 7 Agregar widgets radio button
o 7.1 Obtener el valor del radio button (opción seleccionada)
 8 Adicionar un widget ScrolledText (Tkinter textarea)
o 8.1 Establecer el contenido del scrolledtext
o 8.2 Borrar/limpiar el contenido de un scrolledtext
 9 Crear un MessageBox
o 9.1 Mostrar mensajes de error y de advertencia
o 9.2 Mostrar diálogos de pregunta-respuesta
 10 Agregar un SpinBox (widget de números)
o 10.1 Establecer el valor por defecto del Spinbox
 11 Adicionar el widget Progressbar
o 11.1 Cambiar el color de un Progressbar
 12 Adicionar un diálogo para archivos (elegir archivo y directorio)
o 12.1 Especificar los tipos de archivo (filtro por la extensión del archivo)
 13 Adicionar una barra de menú
 14 Adicionar un widget Notebook (control de pestañas)
o 14.1 Agregar widgets a las pestañas
 15 Adicionar espacio para los widgets (separación o padding)

Crear tu primera aplicación GUI


Primero, importaremos el paquete Tkinter y crearemos una ventana y
estableceremos su título:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.mainloop()

El resultado debe verse como esto:

¡Increíble! Nuestra aplicación funciona.

La última línea llama a la función mainloop. Esta función llama al ciclo sin fin de
la ventana, por lo que la ventana esperará cualquier interacción del usuario hasta
que la cerremos.
Si olvidas llamar a la función mainloop, no aparecerá nada al usuario.
Crear un widget label (etiqueta)
Para agregar una etiqueta a nuestro ejemplo anterior, crearemos una etiqueta
usando la clase label de la siguiente manera:
lbl = Label(window, text="Hello")
Luego estableceremos su posición en el formulario utilizando la función grid con
su ubicación, de esta manera:
lbl.grid(column=0, row=0)
Entonces el código completo se verá de esta manera:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 lbl = Label(window, text="Hello")
8
9 lbl.grid(column=0, row=0)
10
11 window.mainloop()

Y este es el resultado:

Sin llamar a la función grid para label, la etiqueta no aparecerá.


Establecer tamaño de fuente de etiqueta
Puedes establecer la fuente de la etiqueta para agrandarla o quizá, colocarla en
negrita. También puedes cambiar el estilo de fuente.
Para hacerlo, puedes pasar el parámetro font de esta manera:
lbl = Label(window, text="Hello", font=("Arial Bold", 50))
Debes tener en cuenta que el parámetro font se puede pasar a cualquier widget
para cambiar su fuente, no solo a etiquetas.
Genial. Pero, la ventana es tan pequeña que incluso no podemos ver el título.
¿Cómo se establece el tamaño de la ventana?

Establecer el tamaño de una ventana


Podemos establecer el tamaño predeterminado de ventana, usando la
función geometry, de esta manera:
window.geometry('350x200')
La línea anterior establece el ancho de la ventana en 350 píxeles y la altura en
200 píxeles.

Intentemos agregar más widgets como botones y ver cómo manejar el evento
de click de un botón.

Agregar un widget button


Comencemos agregando un botón a la ventana. El botón se crea y se agrega a la
ventana de la misma manera que la etiqueta:

1 btn = Button(window, text="Click Me")


2
3 btn.grid(column=1, row=0)

Entonces, el código de la ventana se verá así:


1 from tkinter import *
2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.geometry('350x200')
8
9 lbl = Label(window, text="Hello")
10
11 lbl.grid(column=0, row=0)
12
13 btn = Button(window, text="Click Me")
14
15 btn.grid(column=1, row=0)
16
17 window.mainloop()

Y el resultado se verá así:

Hay que tener en cuenta que colocamos el botón en la segunda columna de la


ventana, que es la 1. Si olvidas eso y colocas el botón en la misma columna (en
este caso la 0), se mostrará el botón solamente, ya que el botón estará por encima
de la etiqueta.

Cambiar los colores de fondo y primer plano de un


botón
Puedes cambiar el color de frente del botón o de cualquier otro widget usando la
propiedad fg.
También, puedes cambiar el color de fondo de cualquier widget usando la
propiedad bg.
btn = Button(window, text="Click Me", bg="orange", fg="red")
Ahora, si trataste de hacer click en el botón, no pasó nada, porque el
evento click del botón aún no está programado.
Manejar el evento click de un botón
Primero, escribiremos la función que necesitamos ejecutar cuando se haga click
en el botón:

1 def clicked():
2
3 lbl.configure(text="Button was clicked !!")

Luego la cablearemos con el botón especificando la función de esta manera:

1 btn = Button(window, text="Click Me", command=clicked)

Fíjate que, escribimos clicked simplement y no clicked() con paréntesis.


Ahora el código completo se verá de esta manera:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.geometry('350x200')
8
9 lbl = Label(window, text="Hello")
10
11 lbl.grid(column=0, row=0)
12
13 def clicked():
14
15 lbl.configure(text="Button was clicked !!")
16
17 btn = Button(window, text="Click Me", command=clicked)
18
19 btn.grid(column=1, row=0)
20
21 window.mainloop()

Y cuando hacemos click en el botón, el resultado es el esperado:

¡Buenísimo!

Entrada de datos usando la clase Entry


(Tkinter textbox)
En los ejemplos anteriores de Python GUI, vimos cómo agregar widgets simples,
ahora intentemos obtener una entrada del usuario utilizando la clase Tkinter
Entry (cuadro de texto de Tkinter).

Puedes crear un cuadro de texto usando la clase Tkinter Entry de esta manera:

txt = Entry(window,width=10)
Luego, puedes agregar el widget a la ventana usando la función grid, como
siempre.
Entonces nuestra ventana será así:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.geometry('350x200')
8
9 lbl = Label(window, text="Hello")
10
11 lbl.grid(column=0, row=0)
12
13 txt = Entry(window,width=10)
14
15 txt.grid(column=1, row=0)
16
17 def clicked():
18
19 lbl.configure(text="Button was clicked !!")
20
21 btn = Button(window, text="Click Me", command=clicked)
22
23 btn.grid(column=2, row=0)
24
25 window.mainloop()

Y el resultado será el siguiente:

Ahora, si haces click en el botón, se mostrará el mismo mensaje anterior. ¿Qué


tal si se muestra el texto ingresado en el widget de entrada?
Primero, podemos obtener texto de entrada usando la función get. Entonces
podemos escribir este código en nuestra función clicked, de esta manera:

1 def clicked():
2
3 res = "Welcome to " + txt.get()
4
5 lbl.configure(text= res)

Si haces click en el botón y hay un texto en el widget de entrada, se mostrará


“Welcome to ” concatenado con el texto ingresado.

Y este es el código completo:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.geometry('350x200')
8
9 lbl = Label(window, text="Hello")
10
11 lbl.grid(column=0, row=0)
12
13 txt = Entry(window,width=10)
14
15 txt.grid(column=1, row=0)
16
17 def clicked():
18
19 res = "Welcome to " + txt.get()
20
21 lbl.configure(text= res)
22
23 btn = Button(window, text="Click Me", command=clicked)
24
25 btn.grid(column=2, row=0)
26
27 window.mainloop()

Ejecuta el código anterior y verifica el resultado:


¡Increíble!

Cada vez que ejecutamos el código, tenemos que hacer click en el widget de
entrada para establecer el foco para escribir el texto, ¿qué pasa si configuramos el
foco automáticamente?

Establecer el foco en el widget de entrada


Eso es súper fácil, todo lo que tenemos que hacer es llamar a la función focus de
esta manera:
txt.focus()
Y cuando ejecutes el código, notarás que el widget de entrada tiene el foco para
que puedas escribir el texto de inmediato.

Deshabilitar el widget de entrada


Para deshabilitar el widget de entrada, puedes configurar la
propiedad state como deshabilitada (disabled):
txt = Entry(window,width=10, state='disabled')
Ahora, ya no podrás ingresar ningún texto.

Agregar un widget combobox


Para agregar un widget combobox, puedes usar la clase Combobox de la
librería ttk, de esta manera:

1 from tkinter.ttk import *


2
3 combo = Combobox(window)

Luego puedes agregar los valores al combo.

1 from tkinter import *


2
3 from tkinter.ttk import *
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 window.geometry('350x200')
10
11 combo = Combobox(window)
12
13 combo['values']= (1, 2, 3, 4, 5, "Text")
14
15 combo.current(1) #set the selected item
16
17 combo.grid(column=0, row=0)
18
19 window.mainloop()
Como puedes ver, agregamos los elementos del combobox usando una tupla de
valores.

Para configurar el elemento seleccionado, puedes pasar el índice del elemento


deseado a la función actual.

Para obtener el elemento seleccionado, puedes usar la función get, como se


muestra a continuación:
combo.get()

Agregar un widget Checkbutton (Tkinter


checkbox)
Para crear un widget Checkbutton, puedes usar la clase Checkbutton de esta
manera:
chk = Checkbutton(window, text='Choose')
Además, puedes configurar el estado checked pasando el valor de activación
al Checkbutton, de esta manera:

1 from tkinter import *


2
3 from tkinter.ttk import *
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 window.geometry('350x200')
10
11 chk_state = BooleanVar()
12
13 chk_state.set(True) #set check state
14
15 chk = Checkbutton(window, text='Choose', var=chk_state)
16
17 chk.grid(column=0, row=0)
18
19 window.mainloop()

Verifica el resultado:

Establecer el estado de un Checkbutton


Aquí creamos una variable de tipo BooleanVar que no es una variable Python
estándar, es una variable Tkinter. Luego la pasamos a la clase Checkbutton para
establecer el estado de verificación como la línea resaltada en el ejemplo anterior.
Puedes establecer el valor booleano en falso para desactivarlo.

Además, puedes usar IntVar en lugar de BooleanVar y establecer el valor en 0 o


1.

1 chk_state = IntVar()
2
3 chk_state.set(0) #uncheck
4
5 chk_state.set(1) #check

Estos ejemplos dan el mismo resultado que con BooleanVar.


Agregar widgets radio button
Para agregar radio buttons, simplemente puedes usar la clase RadioButton, de
esta manera:
rad1 = Radiobutton(window,text='First', value=1)
Ten en cuenta que, debes establecer el valor para cada botón de opción con un
valor diferente; de lo contrario, no funcionarán.

1 from tkinter import *


2
3 from tkinter.ttk import *
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 window.geometry('350x200')
10
11 rad1 = Radiobutton(window,text='First', value=1)
12
13 rad2 = Radiobutton(window,text='Second', value=2)
14
15 rad3 = Radiobutton(window,text='Third', value=3)
16
17 rad1.grid(column=0, row=0)
18
19 rad2.grid(column=1, row=0)
20
21 rad3.grid(column=2, row=0)
22
23 window.mainloop()

El resultado del código anterior se ve así:


Además, puedes configurar el command de cualquiera de estos botones de opción
para una función específica, de modo que si el usuario hace click en alguno de
ellos, ejecuta el código de la función asignada.
Aquí un ejemplo:

1 rad1 = Radiobutton(window,text='First', value=1, command=clicked)


2
3 def clicked():
4
5 # Do what you need

¡Bastante simple!

Obtener el valor del radio button (opción


seleccionada)
Para obtener el botón de opción actualmente seleccionado o el valor del botón de
opción, puedes pasar un parámetro variable a los botones de opción y más
adelante puede obtener su valor.

1 from tkinter import *


2
3 from tkinter.ttk import *
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 selected = IntVar()
10
11 rad1 = Radiobutton(window,text='First', value=1, variable=selected)
12
13 rad2 = Radiobutton(window,text='Second', value=2, variable=selected)
14
15 rad3 = Radiobutton(window,text='Third', value=3, variable=selected)
16
17 def clicked():
18
19 print(selected.get())
20
21 btn = Button(window, text="Click Me", command=clicked)
22
23 rad1.grid(column=0, row=0)
24
25 rad2.grid(column=1, row=0)
26
27 rad3.grid(column=2, row=0)
28
29 btn.grid(column=3, row=0)
30
31 window.mainloop()

Cada vez que seleccione un botón de opción, el valor de la variable cambiará al


valor de la opción seleccionada.

Adicionar un widget ScrolledText (Tkinter


textarea)
Para adicionar un widget ScrolledText, puedes usar la clase ScrolledText, de
esta manera:
1 from tkinter import scrolledtext
2
3 txt = scrolledtext.ScrolledText(window,width=40,height=10)

Aquí especificamos el ancho y el alto del widget ScrolledText, de lo contrario,


rellenará toda la ventana.

1 from tkinter import *


2
3 from tkinter import scrolledtext
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 window.geometry('350x200')
10
11 txt = scrolledtext.ScrolledText(window,width=40,height=10)
12
13 txt.grid(column=0,row=0)
14
15 window.mainloop()

Puedes ver el resultado:

report this ad
Establecer el contenido del scrolledtext
Para establecer el contenido del scrolledtext, puedes usar el método insert, de
esta manera:
txt.insert(INSERT,'You text goes here')
Borrar/limpiar el contenido de un scrolledtext
Para borrar el contenido de un widget scrolledtext, puedes usar el método delete,
de esta manera:

txt.delete(1.0,END)
¡Grandioso!

Crear un MessageBox
Para mostrar un cuadro de mensaje usando Tkinter, puedes usar la
librería messagebox, de esta manera:

1 from tkinter import messagebox


2
3 messagebox.showinfo('Message title','Message content')

¡Bastante simple!

Vamos a mostrar un cuadro de mensaje cuando el usuario haga click en un botón.

1 from tkinter import *


2
3 from tkinter import messagebox
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 window.geometry('350x200')
10
11 def clicked():
12
13 messagebox.showinfo('Message title', 'Message content')
14
15 btn = Button(window,text='Click here', command=clicked)
16
17 btn.grid(column=0,row=0)
18
19 window.mainloop()

Cuando hagas click en el botón, un cuadro de mensajes informativo aparecerá.

Mostrar mensajes de error y de advertencia


Puede mostrar un mensaje de advertencia o mensaje de error de la misma
manera. Lo único que debe cambiarse es la función message.

1 messagebox.showwarning('Message title', 'Message content') #shows warning message


2
3 messagebox.showerror('Message title', 'Message content') #shows error message

Mostrar diálogos de pregunta-respuesta


Para mostrar una caja de mensaje del tipo si/no al usuario, puedes usar uno de las
siguientes funciones messagebox:

1 from tkinter import messagebox


2
3 res = messagebox.askquestion('Message title','Message content')
4
5 res = messagebox.askyesno('Message title','Message content')
6
7 res = messagebox.askyesnocancel('Message title','Message content')
8
9 res = messagebox.askokcancel('Message title','Message content')
10
11 res = messagebox.askretrycancel('Message title','Message content')

Puedes elegir el estilo de mensaje apropiado, de acuerdo a tus necesidades.


Simplmente reemplaza la función showinfo en el código anterior y ejecútalo.
También puedes revisar qué botón hizo click el usuario, usando la
variable result.
Si haces click en OK o yes o retry, devolverá el valor True; pero, si
eliges no o cancel, retornará False.
La única función que devuelve uno de tres valores es la función askyesnocancel,
que devuelve True o False o None.

Agregar un SpinBox (widget de números)


Para crear un widget Spinbox, puedes usar la clase Spinbox, de esta manera:
spin = Spinbox(window, from_=0, to=100)
Aquí creamos un widget Spinbox y pasamos los parámetros from_ y to para
especificar el rango de números del Spinbox.
Además, puedes especificar el ancho del widget usando el parámetro width:
spin = Spinbox(window, from_=0, to=100, width=5)
Verifiquemos el ejemplo completo:

1 from tkinter import *


2
3 window = Tk()
4
5 window.title("Welcome to LikeGeeks app")
6
7 window.geometry('350x200')
8
9 spin = Spinbox(window, from_=0, to=100, width=5)
10
11 spin.grid(column=0,row=0)
12
13 window.mainloop()
Puedes especificar números para el Spinbox en lugar de usar todo el rango, de
esta manera:

spin = Spinbox(window, values=(3, 8, 11), width=5)


Aquí, el widget Spinbox solamente muestra 3 números: 3, 8 y 11.

Establecer el valor por defecto del Spinbox


Para colocar el valor por defecto del Spinbox, puedes pasar el valor al
parámetro textvariable, de esta manera:

1 var =IntVar()
2
3 var.set(36)
4
5 spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)

Ahora, si corres el programa, el Spinbox te mostrará el valor 36 por defecto.

Adicionar el widget Progressbar


Para crear una barra de progreso, puedes usar la clase progressbar, de esta
manera:
1 from tkinter.ttk import Progressbar
2
3 bar = Progressbar(window, length=200)

Puedes establecer el valor de la barra de progreso, de esta manera:

bar['value'] = 70
Puedes establecer este valor según el proceso que desees, como descargar un
archivo o completar una tarea.

Cambiar el color de un Progressbar


Cambiar el color de un Progressbar es un poco complicado al principio, pero muy
fácil en realidad.

Primero, crearemos un estilo, luego en dicho estilo estableceremos el color de


fondo; y, finalmente, asignaremos el estilo al Progressbar.

Revisa el siguiente ejemplo:

1 from tkinter import *


2
3 from tkinter.ttk import Progressbar
4
5 from tkinter import ttk
6
7 window = Tk()
8
9 window.title("Welcome to LikeGeeks app")
10
11 window.geometry('350x200')
12
13 style = ttk.Style()
14
15 style.theme_use('default')
16
17 style.configure("black.Horizontal.TProgressbar", background='black')
18
19 bar = Progressbar(window, length=200, style='black.Horizontal.TProgressbar')
20
21 bar['value'] = 70
22
23 bar.grid(column=0, row=0)
24
25 window.mainloop()

Y el resultado quedará así:

Adicionar un diálogo para archivos (elegir


archivo y directorio)
Para crear un diálogo de archivos (para elegir archivos) puedes usar la
clase filedialog, de esta manera:

1 from tkinter import filedialog


2
3 file = filedialog.askopenfilename()

Después de que escojas un archivoy hagas click en abrir, la variable file tendrá
la ruta del archivo.
También puedes elegir multiples archivos de la siguiente manera:

files = filedialog.askopenfilenames()
Especificar los tipos de archivo (filtro por la
extensión del archivo)
Puedes especificar los tipos de archivo usando el parámetro filetypes, que,
precisamente especifica la extensión en tuplas.

file = filedialog.askopenfilename(filetypes = (("Text files","*.txt"),("all


files","*.*")))
Puedes solicitar el directorio a usar con el método askdirectory:

dir = filedialog.askdirectory()
Puedes especificar el directorio inicial del diálogo especificando el initialdir, de
esta manera:

1 from os import path


2
3 file = filedialog.askopenfilename(initialdir= path.dirname(__file__))

¡Fácil!

Adicionar una barra de menú


Para agregar una barra de menú, puedes usar la clase menu, de esta manera:

1 from tkinter import Menu


2
3 menu = Menu(window)
4
5 menu.add_command(label='File')
6
7 window.config(menu=menu)

Primero, creamos el menú. Luego, añadimos nuestra primera etiqueta.


Finalmente, asignamos el menú a la ventana.

Puedes agregar los elementos del menú, en cualquir menú, con la


función add_cascade(), de esta manera:
menu.add_cascade(label='File', menu=new_item)
Entonces, nuestro código quedará así:

1 from tkinter import *


2
3 from tkinter import Menu
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 menu = Menu(window)
10
11 new_item = Menu(menu)
12
13 new_item.add_command(label='New')
14
15 menu.add_cascade(label='File', menu=new_item)
16
17 window.config(menu=menu)
18
19 window.mainloop()

De esta manera, puedes agregar tantos elementos como quieras.

1 from tkinter import *


2
3 from tkinter import Menu
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 menu = Menu(window)
10
11 new_item = Menu(menu)
12
13 new_item.add_command(label='New')
14
15 new_item.add_separator()
16
17 new_item.add_command(label='Edit')
18
19 menu.add_cascade(label='File', menu=new_item)
20
21 window.config(menu=menu)
22
23 window.mainloop()

Aquí agregamos otro elemento del menú llamado «Edit» con un separador de
menú.

Puedes notar una línea punteada al principio, bueno, si haces click en esa línea,
mostrará los elementos del menú en una pequeña ventana separada.

Puedes deshabilitar esta característica, deshabilitando la característica tearoff,


de esta manera:
new_item = Menu(menu, tearoff=0)
Simplemente reemplaza el new_item en el ejemplo anterior con éste y ya no
mostrará la línea punteada.
No es necesario que recordarte que puedes escribir cualquier código que funcione
cuando el usuario haga click en cualquier elemento del menú, especificando la
propiedad command.
new_item.add_command(label='New', command=clicked)

Adicionar un widget Notebook (control de


pestañas)
Para crear un control de pestañas, se deben seguir tres pasos.

 Primero, crear un control de pestaña usando la clase Notebook


 Crear la pestaña usando la clase Frame.
 Adicionar la pestaña al control de pestañas.
 Empaquetar el control de pestañas para que sea visible en la ventana.

1 from tkinter import *


2
3 from tkinter import ttk
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 tab_control = ttk.Notebook(window)
10
11 tab1 = ttk.Frame(tab_control)
12
13 tab_control.add(tab1, text='First')
14
15 tab_control.pack(expand=1, fill='both')
16
17 window.mainloop()

De igual manera, puedes añadir tantas pestañas como quieras.


Agregar widgets a las pestañas
Después de crear las pestañas, puedes colocar widgets dentro de ellas, asignado
la propieda parent con la pestaña deseada.

1 from tkinter import *


2
3 from tkinter import ttk
4
5 window = Tk()
6
7 window.title("Welcome to LikeGeeks app")
8
9 tab_control = ttk.Notebook(window)
10
11 tab1 = ttk.Frame(tab_control)
12
13 tab2 = ttk.Frame(tab_control)
14
15 tab_control.add(tab1, text='First')
16
17 tab_control.add(tab2, text='Second')
18
19 lbl1 = Label(tab1, text= 'label1')
20
21 lbl1.grid(column=0, row=0)
22
23 lbl2 = Label(tab2, text= 'label2')
24
25 lbl2.grid(column=0, row=0)
26
27 tab_control.pack(expand=1, fill='both')
28
29 window.mainloop()
Adicionar espacio para los widgets
(separación o padding)
Puedes añadir separación a tus controles para que se vean bien organizados,
usando las propiedades padx y pady.
Simplemente pasa padx y pady a cualquier widget y dáles un valor.
lbl1 = Label(tab1, text= 'label1', padx=5, pady=5)
¡Así de simple!

En este tutorial, vimos muchos ejemplos de Python GUI que utilizan la biblioteca
Tkinter y vimos lo fácil que es desarrollar interfaces gráficas para usarlo.

Este tutorial cubre los aspectos principales del desarrollo de la GUI de Python no
todos. No hay tutorial o un libro pueda cubrir todo.

Espero que encuentres estos ejemplos útiles. Mantente con nosotros.

Gracias.

stoy intentando juntar texto y números.

Estoy haciendo algo mal y no sé qué sea:

l= "linea"
n= 2
w = "nueva"
f=w+l
print(f+" es test")
y la salida me da lo siguiente

nuevalinean es test
y está bien, sin embargo cuando agrego:

l= "linea"
n= 2
w = "nueva"
f=w+l
print(f)+repr(n)
entiendo que el comando repr( ) sirve para convertir números en cadena, pero no consigo que
mi salida sea correcta, la cual en teoría debería ser:
nuevalinea2
en vez de eso, recibo el siguiente error:

nuevalinea

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-2a5749fb6668> in <module>()
----> 1 print(f)+repr(n)

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

python python-3.x string

compartirmejorar esta pregunta


editada el 27 may. 17 a las 15:29

Mariano
21.4k1313 medallas de oro5757 medallas de plata9393 medallas de bronce
formulada el 22 mar. 17 a las 19:57

Valdemar Allan Poe


5511 medalla de oro11 medalla de plata77 medallas de bronce
 La función apropiada para imprimir un objeto es str (). repr () regresa el código necesario para
reconstruir el objeto. – ixi el 22 mar. 17 a las 22:18
añade un comentario
3 respuestas
activasmás antiguas votos

2
La función preconstruida repr hace lo que piensas pero con algunos matices que puedes ver en
la documentación, en teoría retorna una cadena que contiene la representación del objeto que se
le pasa, el código Python que representa ese objeto en forma de cadena y con el cual podemos
reconstruirlo, por ejemplo usando eval().
El error se debe a que en realidad concatenas la salida de la función print (que no retorna
nada) con el retorno de repr que es una cadena. Debería ser así:
print(f+repr(n))
Esta de todas formas, no es la manera de hacer lo que deseas aunque en este caso concreto
funcione. Las formas correctas son las que te han proporcionado ya en las respuesta y otras dos
que añado yo (todo para Python 3.x)

 Casting a str:
 l= "linea"
 n= 2
 w = "nueva"
print(w+l+str(n))
 Método format de las cadenas:
 l= "linea"
 n= 2
 w = "nueva"
print('{}{}{}'.format(w,l,n))
 Print separando cada variable por comas y usando el parámetro sep:
 l= "linea"
 n= 2
 w = "nueva"
print(w, l, n, sep='')
 En Python >= 3.6 puedes usar los literales de cadena formateados:
 l= "linea"
 n= 2
 w = "nueva"
print(f'{w}{l}{n}')

Métodos de unión y
división
6.5.1. Unir una cadena de forma iterativa
Método: join(iterable)

Retorna: la cadena unida con el iterable (la cadena es separada por cada uno de
los elementos del iterable).

>>> formato_numero_factura = ("Nº 0000-0", "-0000 (ID: ", ")")

>>> numero = "275"

>>> numero_factura = numero.join(formato_numero_factura)

>>> print numero_factura

Nº 0000-0275-0000 (ID: 275)

6.5.2. Partir una cadena en tres partes, utilizando un


separador
Método: partition("separador")

Retorna: una tupla de tres elementos donde el primero es el contenido de la


cadena previo al separador, el segundo, el separador mismo y el tercero, el
contenido de la cadena posterior al separador.
>>> tupla = "http://www.eugeniabahit.com".partition("www.")

>>> print tupla

('http://', 'www.', 'eugeniabahit.com')

>>> protocolo, separador, dominio = tupla

>>>> print "Protocolo: {0}\nDominio: {1}".format(protocolo, dominio)

Protocolo: http://

Dominio: eugeniabahit.com

6.5.3. Partir una cadena en varias partes, utilizando


un separador
Método: split("separador")

Retorna: una lista con todos elementos encontrados al dividir la cadena por un
separador.

>>> keywords = "python, guia, curso, tutorial".split(", ")

>>> print keywords

['python', 'guia', 'curso', 'tutorial']

6.5.4. Partir una cadena en en líneas


Método: splitlines()

Retorna: una lista donde cada elemento es una fracción de la cadena divida en
líneas.
>>> texto = """Linea 1

Linea 2

Linea 3

Linea 4

"""

>>> print texto.splitlines()

['Linea 1', 'Linea 2', 'Linea 3', 'Linea 4']

>>> texto = "Linea 1\nLinea 2\nLinea 3"

>>> print texto.splitlines()

['Linea 1', 'Linea 2', 'Linea 3']

Anterior6.4. Métodos de Sustitución

Objetivos de la lección
Esta lección es una rápida introducción a técnicas de manipulación
de cadenas de caracteres (o strings) en Python. Saber cómo manipular
cadenas de caracteres juega un papel fundamental en la mayoría de las
tareas de procesamiento de texto. Si quieres experimentar con las
siguientes lecciones puedes escribir y ejecutar pequeños programas tal
como lo hicimos en lecciones previas, o puedes abrir tu intérprete de
comandos de Python / Terminal para probarlos ahí.

Manipular cadenas de caracteres en Python


Si has estado expuesto antes a otro lenguaje de programación, sabrás
que necesitas declarar o escribir variables antes de que puedas
almacenar cualquier cosa en ellas. Esto no es necesario cuando trabajas
con cadenas de caracteres en Python. Podemos crear una cadena de
caracteres simplemente encerrando contenido entre comillas después de
un signo de igual (=).

mensaje = “Hola Mundo”

Operadores de cadenas de caracteres: adición y


multiplicación
Una cadena de caracteres en un objeto que consiste precisamente en
una serie de signos o caracteres. Python sabe cómo tratar un número de
representaciones poderosas y de propósito general, incluidas las
cadenas de caracteres. Una forma de manipular cadenas de caracteres
es utilizar operadores de cadenas de caracteres. Dichos operadores se
representan con símbolos que asociamos a las matemáticas, como +, -,
*, / y =. Estos signos realizan acciones similares a sus contrapartes
matemáticas cuando se usan con las cadenas de carateres, aunque no
iguales.

Concatenar

Este término significa juntar cadenas de caracteres. El proceso


de concatenación se realiza mediante el operador de suma (+). Ten en
cuenta que debes marcar explícitamente dónde quieres los espacios en
blanco y colocarlos entre comillas.

En este ejemplo, la cadena de caracteres “mensaje1” tiene el contenido


“Hola Mundo”

mensaje1 = 'Hola' + ' ' + 'Mundo'


print(mensaje1)
-> Hola Mundo

Multiplicar

Si quieres varias copias de una cadena de caracteres utiliza el operador


de multiplicación (*). En este ejemplo, la cadena de
caracteres mensaje2a lleva el contenido “Hola” tres veces, mientras que
la cadena de caracteres mensaje2b tiene el contenido “Mundo”.
Ordenemos imprimir las dos cadenas.
mensaje2a = 'Hola ' * 3
mensaje2b = 'Mundo'
print(mensaje2a + mensaje2b)
-> Hola Hola Hola Mundo

Añadir

¿Qué pasa si quieres añadir material de manera sucesiva al final de una


cadena de caracteres? El operador especial para ello es compuesto
(+=).

mensaje3 = 'Hola'
mensaje3 += ' '
mensaje3 += 'Mundo'
print(mensaje3)
-> Hola Mundo

Métodos para cadenas de caracteres: buscar, cambiar


En adición a los operadores, Python trae preinstalado docenas de
métodos que te permiten hacer cosas con las cadenas de caracteres.
Solos o en combinación, los métodos pueden hacer casi todo lo que te
imagines con las cadenas de caracteres. Puedes usar como referencia la
lista de métodos de cadenas de caracteres (String Methods) en el sitio
web de Python, que incluye información de cómo utilizar correctamente
cada uno. Para asegurar que tengas una comprensión básica de
métodos para cadenas de caracteres, lo que sigue es una breve
descripción de los utilizados más comúnmente.

Extensión

Puedes determinar el número de caracteres en una cadena utilizando el


método len. Acuérdate que los espacios en blanco cuentan como un
carácter.

mensaje4 = 'hola' + ' ' + 'mundo'


print(len(mensaje4))
-> 10

Encontrar

Puedes buscar una sub-cadena en una cadena de caracteres utilizando


el método find y tu programa te indicará el índice de inicio de la misma.
Esto es muy útil para procesos que veremos más adelante. Ten en
mente que los índices están numerados de izquierda a derecha y que el
número en el que se comienza a contar la posición es el 0, no el 1.
mensaje5 = "Hola Mundo"
mensaje5a = mensaje5.find("Mundo")
print(mensaje5a)
-> 5
Si la sub-cadena no está presente el programa imprimirá el valor -1.

mensaje6 = "Hola Mundo"


mensaje6a = mensaje6.find("ardilla")
print(mensaje6a)
-> -1

Minúsculas

A veces es útil convertir una cadena de caracteres a minúsculas. Para


ello se utiliza el método lower. Por ejemplo, al uniformar los caracteres
permitimos que la computadora reconozca fácilmente que “Algunas
Veces” y “algunas veces” son la misma frase.

mensaje7 = "HOLA MUNDO"


mensaje7a = mensaje7.lower()
print(mensaje7a)
-> hola mundo
Convertir las minúsculas en mayúsculas se logra
cambiando .lower() por upper().

Reemplazar

Si necesitas cambiar una sub-cadena de una cadena se puede utilizar el


método replace.

mensaje8 = "HOLA MUNDO"


mensaje8a = mensaje7.replace("L", "pizza")
print(mensaje8a)
-> HOpizzaA MUNDO

Cortar

Si quieres cortar partes que no quieras del principio o del final de la


cadena de caracteres, lo puedes hacer creando una sub-cadena. El
mismo tipo de técnica te permite separar una cadena muy larga en
componentes más manejables.

mensaje9 = "Hola Mundo"


mensaje9a = mensaje9[1:8]
print(mensaje9a)
-> ola Mun
Puedes sustituir las variables por números enteros como en este
ejemplo:
mensaje9 = "Hola Mundo"
startLoc = 2
endLoc = 8
mensaje9b = mensaje9[startLoc: endLoc]
print(mensaje9b)
-> la Mun
Esto hace mucho más simple usar este método en conjunción con el
método find como en el próximo ejemplo, que busca la letra “d” en los
seis primeros caracteres de “Hola Mundo” y correctamente nos dice que
no se encuentra ahí (-1). Esta técnica es mucho más eficaz en cadenas
largas -documentos enteros, por ejemplo. Observa que la ausencia de
un número entero antes de los dos puntos significa que queremos
empezar desde el principio de la cadena. Podemos usar la misma técnica
para decirle al programa que pase hasta el final de la cadena de
caracteres dejando vacío después de los dos puntos. Y recuerda que la
posición del índice empieza a contar desde 0, no desde 1.

mensaje9 = "Hola Mundo"


print(mensaje9[:5].find("d"))
-> -1
Hay muchos más, pero los métodos para cadenas de caracteres
anteriores son un buen comienzo. Fíjate que en el ejemplo anterior
utilizamos corchetes en vez de paréntesis. Esta diferencia en los
símbolos de la sintaxis es muy importante. Los paréntesis en Python son
utilizados generalmente para llevar un argumento a una función. De tal
manera que cuando vemos algo como:

print(len(mensaje7))
quiere decir que se lleva la cadena de caracteres “mensaje7” a la
función len y entonces enviar el valor resultante de esa función a la
declaración print para ser impresa. Una función puede ser llamada sin
un argumento, pero de todas formas tienes que incluir un par de
paréntesis vacíos después del nombre de la función. Vimos un ejemplo
de ello también.

mensaje7 = "Hola Mundo"


mensaje7a = mensaje7.lower()
print(mensaje7a)
-> Hola Mundo
Esta declaración le dice a Python que aplique la función lower a la
cadena mensaje7 y guarde el valor resultante en la cadena mensaje7a.

Los corchetes sirven para propósitos diferentes. La cadena es una


secuencia de caracteres; así que si quieres acceder al contenido de la
cadena a partir de su posición en la secuencia, tienes que indicarle a
Python un lugar en la secuencia. Eso es lo que hacen los corchetes:
señalan el lugar del principio y del final de la secuencia, tal y como
vimos en el método cortar.

Secuencias de escape

¿Qué haces cuando necesitas incluir comillas en una cadena de


caracteres? No quieres que el intérprete de Python se equivoque y
piense que la cadena termina en donde se encuentre una comilla. En
Python puedes poner una barra invertida (\) enfrente de la comilla para
que no acabe ahí la cadena. Esto es conocido como secuencia de
escape.

print('\"')
-> "
print('El programa imprime \"Hola Mundo\"')
-> El programa imprime "Hola Mundo"
Otras dos secuencias de escape te permiten incluir marcas de tabulación
(t) y saltos de línea (n):

print('Hola\tHola\tHola\nMundo')
-> Hola Hola Hola
Mundo

Lecturas sugeridas
 Lutz, Learning Python
o Ch. 7: Strings
o Ch. 8: Lists and Dictionaries
o Ch. 10: Introducing Python Statements
o Ch. 15: Function Basics

Sicronización de código

Para seguir a lo largo de las lecciones futuras es importante que tengas


los archivos correctos y programas en el directorio “programming-
historian” de tu disco duro. Al final de cada lección puedes descargar el
archivo zip “python-es-lecciones” para asegurarte que tienes el código
correcto.

 python-es-lecciones1.zip (zip)
 Python - Problema con suma, .get y cuadro de texto para numeros


 Volver
 Nuevo Tema
 <<>>

 Vista:


Problema con suma, .get y cuadro de texto para numeros
Mateo (29/09/2017 00:11:39)1.790 visitas
1 respuesta


Problema con suma, .get y cuadro de texto para numeros
franco (16/11/2018 14:39:59)

 Problema con suma, .get y cuadro de texto para numeros


 Publicado por Mateo (4 intervenciones) el 29/09/2017 00:11:39
 Alguien sabe como puedo utilizar una caja de texto pero para que me muestre numeros , y colocar el resultado

de una suma en el.. al hacerlo me genera error con el .get() y si elimino el .get() en la definicion de la variable el

resultado no da.

 1

 2

 3

 4

 5

 6

 7

 8

 9

 10

 11

 12

 13

 14

 15

 16

 17

 18

 19

 20

 21

 22

 23

 24

 25

 26

 27

 from tkinter import *


 ventana = tk.Tk()

 ventana.title("Geometria y Cargas")
 ventana.geometry("280x200")
 ventana.configure(background="light gray")

 lb1 = tk.Label(text="Total = ", background= "light gray").place(x=10,y=10)

 lbl2 = tk.Label(text="Numero 1= ", background= "light

gray").place(x=65,y=100)

 lbl3 = tk.Label(text="Numero 2 = ", background= "light

gray").place(x=65,y=120)


 Var=tk.StringVar()


 Total=tk.Entry(ventana,textvariable=Var,width= 6).place(x= 135,y= 10)


 entrada1=tk.Entry(ventana,width= 10).place(x= 135,y= 100)

 entrada2=tk.Entry(ventana,width= 10).place(x= 135,y= 120)


 def suma():


 suma=int(entrada1.get()) + int(entrada2.get())


 return Var.set(suma)



 btnAceptar=tk.Button(ventana,text="Sumar",width=8,

command=suma).place(x=180, y=150)


 ventana.mainloop()

 Valora esta pregunta


 0
 Responder

 Problema con suma, .get y cuadro de texto para numeros


 Publicado por franco (1 intervención) el 16/11/2018 14:39:59

 1

 2

 3

 4

 5

 6

 7

 8

 9

 10

 11

 12

 13

 14

 15

 16

 17

 18

 19
 20

 21

 22

 23

 24

 25

 26

 27

 28

 29

 30

 31

 32

 from tkinter import *

 import tkinter as tk


 ventana = tk.Tk()

 ventana.title("Geometria y Cargas")

 ventana.geometry("280x200")

 ventana.configure(background="light gray")

 lb1 = tk.Label(text="Total = ", background= "light gray").place(x=10,y=10)

 lbl2 = tk.Label(text="Numero 1= ", background= "light

gray").place(x=65,y=100)

 lbl3 = tk.Label(text="Numero 2 = ", background= "light

gray").place(x=65,y=120)


 Var=tk.StringVar()


 Total=tk.Entry(ventana,textvariable=Var,width= 6)

 Total.place(x= 135,y= 10)


 entrada1=tk.Entry(ventana,width= 10)

 entrada1.place(x= 135,y= 100)


 entrada2=tk.Entry(ventana,width= 10)
 entrada2.place(x= 135,y= 120)


 def suma():

 uno = int(entrada1.get())

 dos = int(entrada2.get())

 suma= (uno + dos)

 return Var.set(suma)



 btnAceptar=tk.Button(ventana,text="Sumar",width=8,

command=suma).place(x=180, y=150)


 ventana.mainloop()

Formatear strings en Python usando el


operador ‘%’
Formatear strings en Python usando el operador % es el modo tradicional,
muy similar a la función printf del lenguaje C.

Básicamente, en la cadena se define un lugar (en el que se especifica un


marcador de tipo) que será sustituido posteriormente por un valor:

1. >>> nombre = 'J2logo'


2. >>> 'Hola %s' % nombre
3. 'Hola J2logo'

En el ejemplo anterior, el lugar indicado por %s para será sustituido por el


string nombre .

Si nos fijamos en el script que mostraba el resultado de una suma de la sección


anterior, lo podemos mejorar del siguiente modo:

1. >>> def print_suma(x, y):


2. ... return 'El resultado de %i e %i es: %i' % (x, y, x+y)
3. ...
4. >>> print_suma(1, 2)
5. 'El resultado de 1 e 2 es: 3'
Es importante tener en cuenta que los valores son sustituidos en el mismo
orden en que se indican.

Si quieres conocer todos los posibles tipos de conversión usando el estilo printf,
puedes consultar la documentación oficial de Python aquí.

Nuevo estilo: formatear strings usando el


método ‘format’
Python 3 y posteriormente Python 2.7 introdujeron una nuevo modo de formatear
cadenas a través del método format disponible en cualquier objeto de tipo string .

Se puede hacer uso de este método del mismo modo que se hacía con el método
tradicional, es decir, sustituyendo valores en función de la posición a través del
marcador {} :

1. >>> var1 = 'J2logo'


2. >>> var2 = 'Hola'
3. >>> '{} {}, ¿cómo estás?'.format(var2, var1)
4. 'Hola J2logo, ¿cómo estás?'

Pero también puedes especificar el nombre de las variables, de manera que el


orden en el que se pasen los argumentos al llamar a format no importa:

1. >>> var1 = 'J2logo'


2. >>> var2 = 'Hola'
3. >>> '{var2} {var1}, ¿cómo estás?'.format(var1=var1, var2=var2)
4. 'Hola J2logo, ¿cómo estás?'

O indicando el índice de los parámetros al invocar al método format:

1. >>> var1 = 'J2logo'


2. >>> var2 = 'Hola'
3. >>> '{1} {0}, ¿cómo estás?'.format(var1, var2)
4. 'Hola J2logo, ¿cómo estás?'

Usando f-Strings en Python 3.6+


A partir de la versión 3.6 de Python, el lenguaje introdujo un nuevo modo de
formatear strings que es más eficiente que todos los que hemos visto
anteriormente. Son las cadenas literales formateadas o f-Strings.

Esta nueva forma de formatear cadenas, permite embeber expresiones dentro de


una constante de tipo string . Por ejemplo:
1. nombre = 'J2logo'
2. f'Hola {nombre}'
3. 'Hola J2logo'

Otro ejemplo:

1. >>> def print_suma(x, y):


2. ... return f'El resultado de {x} + {y} es: {x + y}'
3. ...
4. >>> print_suma(1, 2)
5. 'El resultado de 1 + 2 es: 3'

Como ves, las f-Strings comienzan siempre con el literal f y, aunque su


comportamiento pueda parecer muy similar a los métodos vistos previamente,
internamente su implementación hace que esta forma sea la más rápida para
concatenar cadenas.

Concatenar una lista de Strings con join


Por último, si dispones de una lista de strings, puedes hacer uso del
método join para concatenar los distintos valores en un único string .

1. >>> cadenas = ['Hola', 'j2logo', ',', '¿cómo', 'estás?']


2. >>> ' '.join(cadenas)
3. 'Hola j2logo , ¿cómo estás?'

Como puedes observar, el literal con el que se llama a join es lo que se utiliza
para separar los distintos elementos de la cadena.

1. >>> numeros = ['1', '2', '3']


2. >>> ', '.join(numeros)
3. '1, 2, 3'

Conclusiones

S-ar putea să vă placă și