Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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 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:
¡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?
Como puedes ver, agregamos los elementos del combobox usando una tupla
de valores.
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.
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!
bar['value'] = 70
Puedes establecer este valor según el proceso que desees, como descargar
un archivo o completar una tarea.
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.
dir = filedialog.askdirectory()
Puedes especificar el directorio inicial del diálogo especificando el initialdir,
de esta manera:
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.
Gracias.
Tutorial De Kivy – Construye Aplicaciones Con
Interfaces Gráficas Usando Python
2019-01-21 Comment(0)
Aprenderás como trabajar con los Kivy buttons, los labels, las recycle views,
las scroll views, el Kivy Canvas y otros widgets para familiarizarte con la
biblioteca.
Instalación
Si tiene varias versiones de Python instaladas en tu computadora, entonces
tendrá que instalar Kivy en la versión que deseas usar para el desarrollo.
Suponiendo que Python está instalado, debes seguir los siguientes pasos:
1 class FirstKivy(App):
3 def build(self):
FirstKivy().run()
El archivo completo de python se estructura de la siguiente forma:
5 class FirstKivy(App):
7 def build(self):
10
11 FirstKivy().run()
5 class FirstKivy(App):
7 def build(self):
10
11 FirstKivy().run()
4
5 class KivyButton(App):
7 def build(self):
10
11 KivyButton().run()
1 mybtn.disabled = True
7 class KivyButton(App):
10
11 instance.disabled = True
12
14
16
17 def build(self):
18
20
21 mybtn.bind(on_press=partial(self.disable, mybtn))
22
23 mybtn.bind(on_press=partial(self.update, mybtn))
24
25 return mybtn
26
27 KivyButton().run()
5 class KivyButton(App):
7 def build(self):
10
11 KivyButton().run()
Kivy Builder es utilizado para cargar widgets de archivos o cadenas Kv. Por
ejemplo si quieres crear un widget, puede utilizar lo de la siguiente manera:
Builder.load_string(""" """)
Dentro de las comillas triples, los widgets necesarios se agregan junto con
sus propiedades. En el siguiente ejemplo, hemos agregado una clase
KivyButton.
1 Builder.load_string("""
3 <KivyButton>:
5 Button:
10
11 Image:
12
13 source: 'images.jpg'
14
15 center_x: self.parent.center_x
16
17 center_y: self.parent.center_y
18
19 """)
2
3 from kivy.uix.boxlayout import BoxLayout
7 Builder.load_string("""
9 <KivyButton>:
10
11 Button:
12
14
16
17 Image:
18
19 source: 'images.jpg'
20
21 center_x: self.parent.center_x
22
23 center_y: self.parent.center_y
24
25 """)
26
28
29 def build(self):
30
31 return self
32
33 KivyButton().run()
1 Builder.load_file("myfile.kv")
5 class KivyButton(App):
7 def build(self):
10
11 KivyButton().run()
Añadiendo estilo al texto en el label
En esta sección, cambiaremos los estilos del texto en el label.
5 class KivyLabel(App):
7 def build(self):
11
KivyLabel().run()
Este es el resultado:
Kivy RecycleView
Haz la suposición de que tienes una gran cantidad de widgets para mostrar
en pantalla los cuales pueden afectar el rendimiento.
1 Builder.load_string('''
3 <ExampleRV>:
5 viewclass: 'Button'
7 RecycleBoxLayout:
9 size_hint_y: None
10
11 height: self.minimum_height
12
13 orientation: 'vertical'
14
15 ''')
1 class ExampleRV(RecycleView):
5 super(ExampleRV, self).__init__(**kwargs)
1 class RecycleApp(App):
3 def build(self):
5 return ExampleRV()
7 RecycleApp().run()
7 Builder.load_string('''
9 <ExampleRV>:
10
11 viewclass: 'Button'
12
13 RecycleBoxLayout:
14
15 size_hint_y: None
16
17 height: self.minimum_height
18
19 orientation: 'vertical'
20
21 ''')
22
23 class ExampleRV(RecycleView):
24
26
27 super(ExampleRV, self).__init__(**kwargs)
28
31 class RecycleApp(App):
32
33 def build(self):
34
35 return ExampleRV()
36
37 RecycleApp().run()
Kivy ScrollView
El ScrollView en Kivy proporciona una vista desplazable. Usando scrollview,
podemos desplazarnos a través del eje x así como el eje y en la pantalla.
5 root = Builder.load_string(r'''
7 ScrollView:
9 Label:
10
12
13 font_size: 30
14
15 size_hint_x: 1.0
16
17 size_hint_y: None
18
20
21 height: self.texture_size[1]
22
23 ''')
24
25 runTouchApp(root)
Para esto, crearemos un método clearText que asigna cadena vacía de texto
al campo y lo llamaremos cuando se presione el botón, es decir, utilizando la
propiedad on_press del botón.
Por lo tanto, cuando pulsamos el botón se borrará el texto.
1 self.box.add_widget(self.txt)
3 self.box.add_widget(self.btn)
3 self.txt.text = ''
9 class ClearApp(App):
10
11 def build(self):
12
14
16
18
19 self.box.add_widget(self.txt)
20
21 self.box.add_widget(self.btn)
22
23 return self.box
24
26
27 self.txt.text = ''
28
29 ClearApp().run()
El resultado de la salida es este:
Kivy Clock
El objeto Kivy Clock se utiliza para programar la llamada de una función
después de intervalos específicos.
1 class ClockExample(App):
3 i=0
1 def build(self):
5 Clock.schedule_interval(self.Clock_Callback, 2)
7 return self.mybtn
8
9 def Clock_Callback(self, dt):
10
11 self.i = self.i+1
12
7 class ClockExample(App):
9 i=0
10
11 def build(self):
12
14
15 Clock.schedule_interval(self.clock_callback, 2)
16
17 return self.mybtn
18
21 self.i+= 1
22
24
25 ClockExample().run()
Kivy Canvas
La representación gráfica de un widget está representada con Kivy Canvas.
Puedes dibujar lo que quieras dentro de un lienzo (canvas).
En esta sección, aprenderá a crear un canvas y cómo dibujar un rectángulo
dentro de este.
1 import kivy
1 kvWidget = """
3 MyWidget:
5 orientation: 'vertical'
7 canvas:
9 Color:
10
11 rgb: (255, 0, 0)
12
13 Rectangle:
14
15 size: self.size
16
17 pos: self.pos
18
19 """
20
21 class MyWidget(BoxLayout):
22
24
25 super().__init__(**kwargs)
7 kvWidget = """
9 MyWidget:
10
11 orientation: 'vertical'
12
13 canvas:
14
15 Color:
16
18
19 Rectangle:
20
21 size: self.size
22
23 pos: self.pos
24 """
25
26 class MyWidget(BoxLayout):
27
29
30 super().__init__(**kwargs)
31
32 class CanvasApp(App):
33
34 def build(self):
35
36 return Builder.load_string(kvWidget)
37
38 CanvasApp().run()
7 kvWidget = """
9 MyWidget:
10
11 orientation: 'vertical'
12
13 canvas:
14
15 Rectangle:
16
17 size: self.size
18
19 pos: self.pos
20
21 source: 'images.jpg'
22
23 """
24
25 class MyWidget(BoxLayout):
26
28
29 super().__init__(**kwargs)
30
31 class CanvasApp(App):
32
33 def build(self):
34
35 return Builder.load_string(kvWidget)
36
37 CanvasApp().run()
Kivy vs PyQt
Como Kivy, PyQt también se usa para crear aplicaciones GUI, pero PyQt es
más conocido por aplicaciones de escritorio.
<class 'pandas.core.frame.DataFrame'>
¡Este resultado es llamado DataFrame! Esa es la unidad básica de pandas
con la que vamos a tratar hasta el final del tutorial.
El DataFrame es una estructura de 2 dimensiones etiquetada donde
podemos almacenar datos de diferentes tipos. DataFrame es similar a una
tabla SQL o una hoja de cálculo de Excel.
import pandas
Ahora llama al método read_csv () de la siguiente manera:
pandas.read_csv('Book1.csv')
Book1.csv tiene el siguiente contenido:
El código generará el siguiente DataFrame:
1 import pandas
3 pandas.read_csv('myFile.txt')
pandas.read_csv('myFile.txt', delimiter='\t')
Ahora la salida será:
Parece correcto ahora.
Leer SQL
Puede usar el método read_sql () de pandas para leer desde una base de
datos SQL. Esto se demuestra en el siguiente ejemplo:
1 import sqlite3
3 import pandas
5 con = sqlite3.connect('mydatabase.db')
En este ejemplo, nos conectamos a una base de datos SQLite3 que tiene una
tabla llamada “Empleado”. Usando el método read_sql () de pandas, pasamos
una consulta y un objeto de conexión al método read_sql (). La consulta
recupera todos los datos de la tabla.
Nuestra tabla de empleados se parece a la siguiente:
Cuando ejecutes el código anterior, la salida será como la siguiente:
Seleccionar columnas
Supongamos que tenemos tres columnas en la tabla Empleado de esta
manera:
Para seleccionar columnas de la tabla, pasaremos la siguiente consulta:
3 x['Name']
1 import pandas
3 frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
4
5 df = pandas.DataFrame(frame_data)
En este código, creamos un DataFrame con tres columnas y tres filas usando
el método DataFrame () de pandas. El resultado será el siguiente:
df.loc[df['name'] == 'Jason']
df.loc [] o DataFrame.loc [] es una arreglo booleano que se puede usar para
acceder a filas o columnas mediante valores o etiquetas. En el código
anterior, se buscará la fila donde el nombre es igual a Jason.
La salida será:
3 >>> df = pandas.DataFrame(frame_data)
Creamos un DataFrame. Ahora vamos a acceder a una fila usando df.loc []:
>>> df.loc[1]
Como puedes ver, recuperamos una fila. Podemos hacer lo mismo usando el
operador de segmentación de la siguiente manera:
>>> df[1:2]
>>> df.dtypes
La salida será:
1 >>> frame_data = {'A': [1, 2, 3], 'B': [18, 20, 22], 'C': [54, 12, 13]}
3 >>> df = pandas.DataFrame(frame_data)
3 >>> df.apply(np.sqrt)
>>>df['A'].apply(np.sqrt)
1 >>> frame_data = {'A': [23, 12, 30], 'B': [18, 20, 22], 'C': [54, 112, 13]}
3 >>> df = pandas.DataFrame(frame_data)
>>> df.sort_values(by=['A'])
La salida será:
El método sort_values () tiene un atributo “by” que es necesario. En el código
anterior, los valores se ordenan por la columna A. Para ordenar por varias
columnas, el código es el siguiente:
>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 20], 'job': ['Assistant', 'Manager',
1
'Clerk', 'Manager']}
2
3
>>> df = pandas.DataFrame(frame_data)
Aquí creamos un DataFrame con una fila duplicada. Para verificar si hay filas
duplicadas en el DataFrame, usa el método duplicated () del DataFrame.
>>> df.duplicated()
El resultado será:
Se puede ver que la última fila es un duplicado. Para eliminar esta fila,
ejecuta la siguiente línea de código:
>>> df.drop_duplicates()
Ahora el resultado será:
>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 21], 'job': ['Assistant', 'Manager',
1
'Clerk', 'Employee']}
2
3
>>> df = pandas.DataFrame(frame_data)
Aquí puedes ver que Jason esta dos veces. Si desea eliminar duplicados por
columna, simplemente pasa el nombre de la columna de la siguiente manera:
>>> df.drop_duplicates(['name'])
El resultado será como el siguiente:
El resultado será:
Eliminar filas
Podemos usar el método drop () para eliminar una fila al pasar el índice de
la fila.
1 >>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
3 >>> df = pandas.DataFrame(frame_data)
Para eliminar una fila con el índice 0 donde el nombre es James, la edad es
18 y el trabajo es asistente, utiliza el siguiente código:
>>> df.drop([0])
Ahora podemos eliminar una fila con un cierto valor. Por ejemplo, si
queremos eliminar una fila donde el nombre es Rogers, entonces el código
será:
>>> df.drop(['Rogers'])
La salida será:
1 >>> frame_data = {'A': [23, 12, 12], 'B': [18, 18, 22], 'C': [13, 112, 13]}
3 >>> df = pandas.DataFrame(frame_data)
>>> df['A'].sum()
1 >>> frame_data = {'A': [23, 12, 12], 'B': [18, 18, 22], 'C': [13, 112, 13]}
3 >>> df = pandas.DataFrame(frame_data)
>>> df['A'].nunique()
Si desea contar todos los valores en una columna, puedes usar el método
count () de la siguiente manera:
>>> df['A'].count()
Filas de subconjuntos
Para seleccionar un subconjunto de un DataFrame, puedes usar los
corchetes.
df.[start:count]
El punto de inicio se incluirá en el subconjunto, pero el punto de parada no
se incluye. Por ejemplo, para seleccionar 3 filas a partir de la primera fila,
escribirás:
>>> df[0:3]
La salida será:
>>> df[0:2]
>>> df[-1:]
Escribir a un Excel
Para escribir un DataFrame en una hoja de Excel, podemos usar el método
to_excel ().
Para escribir en una hoja de Excel, tiene que abrir la hoja y para abrir una
hoja de Excel, tendremos que importar el módulo openpyxl.
3 >>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
5 >>> df = pandas.DataFrame(frame_data)
>>> df.to_csv("pandasCSV.csv")
El archivo de salida será como el siguiente:
Escribir a SQL
Para escribir datos en SQL, podemos usar el método to_sql ().
1 import sqlite3
3 import pandas
5 con = sqlite3.connect('mydatabase.db')
7 frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
8
9 df = pandas.DataFrame(frame_data)
10
11 df.to_sql('users', con)
En este código, creamos una conexión con una base de datos sqlite3. Luego
creamos un DataFrame con tres filas y tres columnas.
Escribir a JSON
Puede usar el método to_json () del DataFrame para escribir en un archivo
JSON.
>>> df.to_json("myJson.json")
En esta línea de código, el nombre del archivo JSON se pasa como un
argumento. El DataFrame se almacenará en el archivo JSON. El archivo
tendrá el siguiente contenido:
>>> df.to_html("myhtml.html")
El archivo de resultados tendrá el siguiente contenido:
Cuando abras el archivo HTML en el navegador, se verá así:
Trabajar con pandas es muy fácil. ¡Es como trabajar con hojas de Excel!
Pandas DataFrame es una biblioteca muy flexible que puedes usar.