Introducción a Python para desarrolladores de complementos de NVDA

Profesor/a: José Manuel Delicado Alcolea

Este curso constituye el primer paso de tu camino al desarrollo de complementos de NVDA si no sabes nada de programación. A lo largo de diez módulos, aprenderás los fundamentos de la programación en Python, el lenguaje con el que está construido NVDA, para que puedas entender cómo funcionan los complementos existentes y, con el tiempo, crear los tuyos propios. Los ocho primeros módulos se centran en el uso del lenguaje y el intérprete con NVDA, y en los dos últimos presentamos Urllib, para que aprendas a lanzar peticiones a un servicio de Internet, y WXPython, el motor usado por NVDA para la creación de interfaces gráficas.

Nota: este curso se ha creado con la asistencia de inteligencia artificial y revisión humana en profundidad. Los contenidos han sido redactados a partir de los datos de entrenamiento del modelo de lenguaje. Si algún contenido de este curso te resulta familiar, y crees que está inspirado en un curso real escrito a mano, por favor háznoslo saber.

Tu matrícula

Para matricularte, inicia sesión o crea una cuenta.

Contenido del curso

Módulo 1: Introducción

  1. Unidad: Bienvenida y presentación del curso
  2. Unidad: Perfil del alumno
  3. Unidad: Objetivos del curso
  4. Unidad: Cómo usar estos materiales con un lector de pantalla
  5. Unidad: Qué es la programación
  6. Unidad: Lenguajes compilados frente a lenguajes interpretados
  7. Unidad: Qué es Python
  8. Unidad: Por qué Python es el lenguaje de NVDA
  9. Unidad: Conclusiones
  10. Ejercicio: Ejercicio 1
  11. Ejercicio: Ejercicio 2
  12. Ejercicio: Ejercicio 3
  13. Ejercicio: Ejercicio 4
  14. Unidad: Glosario del módulo 1

Módulo 2: Entorno de trabajo accesible

  1. Unidad: Introducción
  2. Unidad: Qué vamos a instalar y por qué
  3. Unidad: Instalación de Python 3.13
  4. Unidad: Verificación de la instalación de Python
  5. Unidad: Instalación de Notepad++
  6. Unidad: Configuración de Notepad++ para este curso
  7. Unidad: Cómo trabajaremos con estos dos programas
  8. Unidad: Glosario

Módulo 3: La consola de Python

  1. Unidad: Objetivos del módulo
  2. Unidad: ¿Qué es la consola de Python?
  3. Unidad: El símbolo `>>>`: el indicador principal
  4. Unidad: El símbolo `...`: continuación de una instrucción
  5. Unidad: La función `print()`
  6. Unidad: El historial de órdenes
  7. Unidad: Cómo leer un error en la consola
  8. Unidad: Navegación por la consola con NVDA
  9. Unidad: Buenas prácticas al trabajar en la consola
  10. Ejercicio: Ejercicio 1
  11. Ejercicio: Ejercicio 2
  12. Ejercicio: Ejercicio 3
  13. Ejercicio: Ejercicio 4
  14. Ejercicio: Ejercicio 5
  15. Ejercicio: Ejercicio 6 (repaso combinado)
  16. Unidad: Documentación de referencia
  17. Unidad: Conclusiones

Módulo 4: Tipos de datos y variables

  1. Unidad: Objetivos del módulo
  2. Unidad: ¿Qué es una variable?
  3. Unidad: Reglas y convenciones para nombrar variables
  4. Unidad: Tipos de datos básicos
  5. Unidad: La función `type()`
  6. Unidad: Comentarios con `#`
  7. Unidad: Conversión de tipos (casting)
  8. Unidad: Pedir datos al usuario con `input()`
  9. Unidad: Cadenas con variables: introducción a las f-strings
  10. Unidad: Un breve adelanto: tipos de datos compuestos
  11. Unidad: Buenas prácticas al trabajar con variables y tipos de datos
  12. Ejercicio: Ejercicio 1
  13. Ejercicio: Ejercicio 2
  14. Ejercicio: Ejercicio 3
  15. Ejercicio: Ejercicio 4
  16. Ejercicio: Ejercicio 5
  17. Ejercicio: Ejercicio 6 (repaso combinado)
  18. Unidad: Documentación de referencia
  19. Unidad: Conclusiones

Módulo 5: Control de flujo

  1. Unidad: Objetivos del módulo
  2. Unidad: De la consola al archivo: por qué cambiamos de herramienta
  3. Unidad: Operadores de comparación
  4. Unidad: Operadores lógicos
  5. Unidad: La sentencia if
  6. Unidad: El bucle while
  7. Unidad: El bucle for
  8. Unidad: break, continue y pass
  9. Unidad: El operador condicional en una línea
  10. Unidad: Buenas prácticas al escribir estructuras de control
  11. Ejercicio: Ejercicio 1
  12. Ejercicio: Ejercicio 2
  13. Ejercicio: Ejercicio 3
  14. Ejercicio: Ejercicio 4
  15. Ejercicio: Ejercicio 5
  16. Ejercicio: Ejercicio 6
  17. Ejercicio: Ejercicio 7
  18. Ejercicio: Ejercicio 8 (repaso combinado)
  19. Unidad: Documentación de referencia
  20. Unidad: Conclusiones

Módulo 6: Funciones y módulos

  1. Unidad: Objetivos del módulo
  2. Unidad: Por qué organizar el código en funciones
  3. Unidad: Definir y llamar una función
  4. Unidad: Parámetros: funciones que reciben datos
  5. Unidad: El valor de retorno: return
  6. Unidad: Parámetros con valor por defecto
  7. Unidad: Documentar una función: el docstring
  8. Unidad: Ámbito de las variables: local y global
  9. Unidad: El operador módulo (%)
  10. Unidad: Módulos: reutilizar código ya escrito
  11. Unidad: Crear un módulo propio
  12. Unidad: Buenas prácticas al escribir funciones y módulos
  13. Ejercicio: Ejercicio 1
  14. Ejercicio: Ejercicio 2
  15. Ejercicio: Ejercicio 3
  16. Ejercicio: Ejercicio 4
  17. Ejercicio: Ejercicio 5
  18. Ejercicio: Ejercicio 6
  19. Ejercicio: Ejercicio 7
  20. Ejercicio: Ejercicio 8
  21. Ejercicio: Ejercicio 9 (módulo propio)
  22. Ejercicio: Ejercicio 10 (repaso combinado)
  23. Unidad: Documentación de referencia
  24. Unidad: Conclusiones

Módulo 7: Estructuras de datos

  1. Unidad: Objetivos del módulo
  2. Unidad: Por qué hacen falta estructuras de datos
  3. Unidad: Operaciones avanzadas con cadenas de texto
  4. Unidad: Listas
  5. Unidad: Tuplas
  6. Unidad: Diccionarios
  7. Unidad: Conjuntos (set)
  8. Unidad: Estructuras anidadas
  9. Unidad: Buenas prácticas y cuándo usar cada estructura
  10. Ejercicio: Ejercicio 1
  11. Ejercicio: Ejercicio 2
  12. Ejercicio: Ejercicio 3
  13. Ejercicio: Ejercicio 4
  14. Ejercicio: Ejercicio 5
  15. Ejercicio: Ejercicio 6
  16. Ejercicio: Ejercicio 7
  17. Ejercicio: Ejercicio 8
  18. Ejercicio: Ejercicio 9
  19. Ejercicio: Ejercicio 10
  20. Ejercicio: Ejercicio 11 (estructuras anidadas)
  21. Ejercicio: Ejercicio 12 (repaso combinado)
  22. Unidad: Documentación de referencia
  23. Unidad: Conclusiones

Módulo 8: Programación orientada a objetos

  1. Unidad: Objetivos del módulo
  2. Unidad: Por qué programación orientada a objetos
  3. Unidad: Clases y objetos
  4. Unidad: Métodos de instancia
  5. Unidad: Atributos y métodos de clase
  6. Unidad: Encapsulación
  7. Unidad: Herencia
  8. Unidad: El método mágico `__str__`
  9. Unidad: Buenas prácticas y cuándo usar POO
  10. Ejercicio: Ejercicio 1
  11. Ejercicio: Ejercicio 2
  12. Ejercicio: Ejercicio 3
  13. Ejercicio: Ejercicio 4
  14. Ejercicio: Ejercicio 5
  15. Ejercicio: Ejercicio 6
  16. Ejercicio: Ejercicio 7
  17. Ejercicio: Ejercicio 8
  18. Ejercicio: Ejercicio 9
  19. Ejercicio: Ejercicio 10
  20. Ejercicio: Ejercicio 11 (encapsulación con name mangling)
  21. Ejercicio: Ejercicio 12 (repaso combinado)
  22. Unidad: Documentación de referencia
  23. Unidad: Conclusiones

Módulo 9: La biblioteca urllib

  1. Unidad: Objetivos del módulo
  2. Unidad: Qué es urllib y para qué sirve
  3. Unidad: El submódulo `urllib.request`: hacer una petición GET
  4. Unidad: Trabajar con datos JSON
  5. Unidad: Construir URLs con parámetros: `urllib.parse`
  6. Unidad: Cabeceras personalizadas con `Request`
  7. Unidad: Manejo de errores de red
  8. Unidad: Enviar datos con POST
  9. Unidad: Descargar archivos con `urlretrieve()`
  10. Unidad: Buenas prácticas
  11. Ejercicio: Ejercicio 1
  12. Ejercicio: Ejercicio 2
  13. Ejercicio: Ejercicio 3
  14. Ejercicio: Ejercicio 4
  15. Ejercicio: Ejercicio 5
  16. Ejercicio: Ejercicio 6
  17. Ejercicio: Ejercicio 7
  18. Ejercicio: Ejercicio 8
  19. Ejercicio: Ejercicio 9 (repaso combinado)
  20. Unidad: Documentación de referencia
  21. Unidad: Conclusiones

Módulo 10: Introducción a wxPython

  1. Unidad: Objetivos del módulo
  2. Unidad: Qué es wxPython e instalación
  3. Unidad: La aplicación wx mínima: `wx.App`, `Frame` y `MainLoop()`
  4. Unidad: `Frame`: la ventana principal
  5. Unidad: Organizar el contenido: `Panel` y `Sizer`
  6. Unidad: Etiquetas y campos de texto: `StaticText` y `TextCtrl`
  7. Unidad: Botones y eventos: `Button` y `Bind()`
  8. Unidad: Más controles de entrada: `CheckBox`, `RadioButton`, `Choice` y `SpinCtrl`
  9. Unidad: La barra de menús: `MenuBar` y `Menu`
  10. Unidad: Cuadros de diálogo: `Dialog`
  11. Unidad: Vistas de lista: `ListCtrl`
  12. Unidad: Vistas de árbol: `TreeCtrl`
  13. Unidad: Pestañas: `Notebook`
  14. Unidad: Aplicación completa: gestor de contactos accesible
  15. Unidad: Buenas prácticas de accesibilidad en wxPython
  16. Ejercicio: Ejercicio 1
  17. Ejercicio: Ejercicio 2
  18. Ejercicio: Ejercicio 3
  19. Ejercicio: Ejercicio 4
  20. Ejercicio: Ejercicio 5
  21. Unidad: Documentación de referencia
  22. Unidad: Conclusiones

Módulo 11: Finalización del curso

  1. Ejercicio: Despedida y próximos pasos