Desarrollo de GUI de Python de Tkinter: de principiante a avanzado | Jayanta Sarkar | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Desarrollo de GUI de Python de Tkinter: de principiante a avanzado

teacher avatar Jayanta Sarkar, Behind the Code: Jayanta Sarkar

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      INTRODUCCIÓN

      2:13

    • 2.

      ¿Qué es TKinter?

      3:16

    • 3.

      Instalación de Tkinter

      3:13

    • 4.

      Tu primera ventana Tkinter con bucle principal

      3:56

    • 5.

      Creación de una ventana principal

      5:06

    • 6.

      Redimensionamiento de ventanas, límites de MinMax

      7:52

    • 7.

      Widget de etiqueta Tkinter

      16:04

    • 8.

      Widget de marco Tkinter

      10:11

    • 9.

      Widget del botón Tkinter

      10:41

    • 10.

      Widget de entrada a Tkinter

      10:36

    • 11.

      Widget de texto

      9:24

    • 12.

      Widgets de mensajes

      4:00

    • 13.

      Diseño del empaque

      11:05

    • 14.

      Disposición de cuadrícula en tkinter

      12:14

    • 15.

      Disposición del lugar

      6:45

    • 16.

      Diseños anidados (cuadro dentro de marco)

      6:41

    • 17.

      Widget del botón de verificación de Tkinter

      9:09

    • 18.

      Widget de botón de radio Tkinter

      8:21

    • 19.

      Widget de caja de listas Tkinter

      14:58

    • 20.

      Combobox (a través de ttk) en Tkinter

      8:35

    • 21.

      Caja espininacea Tkinter: widget

      8:01

    • 22.

      Widget de escala Tkinter

      7:25

    • 23.

      en Tkinter (a través de ttk)

      7:22

    • 24.

      Menú y submenús en Tkinter

      9:52

    • 25.

      Separador, ventana de vidrio acrílico, cuaderno

      8:38

    • 26.

      Vinculación de comandos (método más simple)

      4:52

    • 27.

      Uso del método bind() (método avanzado)

      10:02

    • 28.

      Enfoque, captura y estado del widget

      11:47

    • 29.

      Estado del widget

      7:23

    • 30.

      Miniproyecto de aplicación de dibujo con método de evento y enlace

      12:26

    • 31.

      Variables Tkinter y enlace de datos

      8:18

    • 32.

      Cajas de mensajes

      6:55

    • 33.

      Diálogos de archivos

      10:11

    • 34.

      Diálogos de archivos, Parte 2

      5:24

    • 35.

      Color Selector (colorchooser)

      4:25

    • 36.

      Barras de herramientas Tkinter Python

      6:13

    • 37.

      Cómo agregar imágenes en Tkinter

      9:14

    • 38.

      Redimensiona, recorta, rota y filtra imágenes (almohada + Tkinter)

      9:16

    • 39.

      Uso del módulo ttk

      4:35

    • 40.

      Cómo diseñar widgets con ttk

      8:48

    • 41.

      Temas personalizados en ttk

      9:21

    • 42.

      Cómo crear aplicaciones de GUI utilizando clases

      10:41

    • 43.

      Estructuración de aplicaciones más grandes

      13:51

    • 44.

      Ejemplo 1 Botón con estilo personalizado

      6:46

    • 45.

      Ejemplo 2 Campo de entrada personalizado (etiqueta + entrada junta)

      6:28

    • 46.

      Convierte una GUI de Python en EXE

      9:24

    • 47.

      Proyecto 1: aplicación de lista de tareas

      12:10

    • 48.

      Guarda datos permanentemente con JSON

      10:33

    • 49.

      Proyecto 2: calculadora simple

      14:08

    • 50.

      Proyecto 3: reloj digital

      5:10

    • 51.

      Proyecto 4: convertidor de divisas

      14:34

    • 52.

      Proyecto 5: convertidor de unidades

      2:07

    • 53.

      Crea la estructura y establece la lógica para mostrar las unidades en la caja combo

      12:15

    • 54.

      Trabajar en el método de conversión

      13:36

    • 55.

      Iniciar sesión desde la GUI uso

      6:29

    • 56.

      Registro de sesión, parte 2

      8:24

    • 57.

      Inscripción, parte 3

      10:46

    • 58.

      Mini aplicación de GUI tkinter de motor de búsqueda.

      7:56

    • 59.

      Trabajar en la función de búsqueda

      7:07

    • 60.

      Muestra el resultado en un cuadro de texto

      13:17

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

18

Estudiantes

--

Proyectos

Acerca de esta clase

¿Estás listo para dar vida a tus habilidades de Python con aplicaciones de escritorio interactivas?
Este curso está diseñado para desarrollarte GUI en Python de nivel principiante a avanzado con Tkinter, el kit de herramientas GUI integrado de Python. Tanto si recién estás comenzando tu viaje con Python como si quieres crear aplicaciones profesionales de escritorio, este curso te dotará de todo lo que necesitas.

Comenzaremos por lo básico: crearemos tu primera ventana de Tkinter, y gradualmente avanzaremos hacia la creación de aplicaciones estructuradas y ricas en funciones, utilizando widgets, diseños, manejo de eventos, imágenes, diálogos y conceptos de OOP. Al final de este curso, tendrás la confianza y las habilidades necesarias para diseñar y desarrollar proyectos de GUI del mundo real.

Qué aprenderás:

  1. Introducción a Tkinter: configura tu primera ventana, comprende el loop principal (), y inicia la programación de la GUI.

  2. Gestión de ventanas: controlar el título, el tamaño, la posición, los iconos, la pantalla completa y el redimensionamiento.

  3. Widgets básicos: trabaja con etiquetas, botones, campos de entrada, áreas de texto, mensajes y marcos.

  4. Gestión de la disposición: organiza las GUI con diseños anidados, compacta, cuadrícula, colocación y anidados.

  5. Widgets avanzados: explora botones de verificación, botones de radio, listas de opciones, cajas de combos, cajas espinillas, escalas, barras de progreso, menús, pestañas y más.

  6. Gestión de eventos: aprende comandos, asociaciones, eventos de teclado o ratón y estados de widget.

  7. Variables Tkinter y enlace de datos: usa StringVar, IntVar, DoubleVar y BooleanVar para actualizar datos en tiempo real.

  8. Cajas de diálogo: Implementa cuadros de mensaje, diálogos de archivos y selectores de color.

  9. Menús y barras de herramientas: crea barras de menús, submenús y barras de herramientas funcionales con iconos.

  10. Tkinter orientado a objetos: crea aplicaciones escalables usando clases, herencia y reutilización.

  11. Imágenes y lienzos: trabaja con imágenes, dibuja formas, gestiona eventos con ratón y crea aplicaciones de dibujo.

  12. Widgets temáticos (ttk): mejora tus GUI con estilos, temas y diseños personalizados modernos.

¿A quiénes está dirigido este curso?

  • Principiantes que conocen Python básico y quieren aprender desarrollo de GUI.

  • Los desarrolladores de Python que buscan crear aplicaciones de escritorio.

  • Estudiantes y profesionales que quieren experiencia práctica con proyectos de GUI del mundo real.

Conoce a tu profesor(a)

Teacher Profile Image

Jayanta Sarkar

Behind the Code: Jayanta Sarkar

Profesor(a)

Jayanta Sarkar is a dedicated Python programmer and full-stack web developer with a passion for creating dynamic and interactive web applications. With a robust background in both front-end and back-end development, Jayanta excels in building seamless user experiences and efficient, scalable systems.

Over the years, Jayanta has honed his skills in various programming languages and frameworks, making him proficient in technologies such as JavaScript, CSS, HTML, and MySQL. His expertise extends to developing comprehensive solutions that integrate sophisticated database management with intuitive user interfaces.

Jayanta's journey in the tech industry is marked by a continuous drive to learn and adapt to new technologies. He has developed and published several successf... Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación Python
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. INTRODUCCIÓN: Hola, y bienvenidos a Python GUI Development con Kiner. Mi nombre es Jotha Shokar y soy tu instructora para este curso Es el curso más completo y bien organizado sobre desarrollo GI con la ayuda de Kiner Al final de este curso, los estudiantes podrán comprender lo básico de la programación GI con Kiner construir aplicaciones de escritorio completamente funcionales, usar asistentes, administradores de diseño y manejo de eventos, aplicar programación orientada a objetos en la aplicación Kinter y construir proyectos del mundo y construir Y si hablamos de la estructura core, primero, te voy a dar la introducción, cómo podemos instalarla, qué es Kinter y entendiendo el do principal Entonces vamos a saltar a gestión de Kinter Window Después de eso, vamos a aprender magos de Kinter. Aquí vamos a aprender magos básicos. Entonces vamos a aprender la gestión de maquetación, como el lugar de cuadrícula PAG y los diseños anidados Entonces vamos a saltar al mago avanzado de Kinter Vamos a conocer todo el Wizzer avanzado uno por uno Después de eso, vamos a aprender sobre el evento Kiner fácilmente, como el enlace de comandos, eventos de teclado y mouse, etcétera. Y en el siguiente capítulo vamos a hablar sobre la variable Kinter y la vinculación de datos Después de eso, vamos a trabajar con cuadros de diálogo, como cuadro de mensaje, diálogo de campo y selector de color A continuación, vamos a hablar de maniobras y Colbords. Después de eso, vamos a aprender programación orientada a objetos en Kiner. Puede crear aplicaciones GI usando clases, estructuradas en aplicaciones más grandes, hereda y asistentes En el siguiente capítulo, vamos a aprender imágenes y lienzo. Y por fin, vamos a aprender mago temático con TTK Vamos a usar el módulo TTK, asistentes de estilo, temas personalizados, Entonces después de aprender todo este capítulo, vamos a d sumergirnos en la sección de proyectos. Vamos a cubrir algunos proyectos básicos. Entonces vamos a cubrir algunos proyectos intermedios, y también voy a cubrir algunos proyectos avanzados. Entonces, ¿a qué esperas? Empecemos y creamos tu propia aplicación de escritorio. Muchas gracias. 2. ¿Qué es TKinter?: Hola y bienvenidos. Este es el primer tutorial sobre Kiner. De lo contrario, TK Enter. En este tutorial, te voy a presentar ¿qué es Kiner ¿Qué es Kinter y por qué deberíamos aprender Kiner? Kinter es la biblioteca GI estándar para Python. Proporciona una primera y fácil manera de crear aplicaciones de escritorio con elementos gráficos como botones, etiqueta, cuadro de texto y mob Entonces básicamente, se trata una interfaz gráfica de usuario que es construida por Python. Si tienes conocimientos básicos sobre la codificación Python, entonces puedes comenzar este viaje. Es una de las formas más fáciles crear aplicaciones de escritorio. Y si hablo de su punto clave, viene con biblioteca incorporada. TKNter viene con pre-instalado con Python, por lo que no es necesario instalarlo El siguiente punto clave es por sobre TCL, de lo contrario TCA. Actúa como una interfaz Python para el kit de herramientas TCL TGI. Básicamente, Kiner no es un kit de herramientas GI en sí, sino más bien un rapero Python alrededor de un kit de herramientas GI existente llamado TCL TK Ahora el quien es lo que es TCL y Tiki? TCL significa lenguaje de comandos de herramienta. Es un lenguaje de scripting, y TK es un kit de herramientas GI que fue desarrollado originalmente para TCL para crear una aplicación GUI Juntos, TCL y TK son un sistema potente y flexible se utiliza para construir una interfaz de usuario Así que ahora tienes potencia Pythons con la función TK GUI. Y la siguiente característica más importante es que es la multiplataforma. Las aplicaciones Kiner se pueden ejecutar en Windows, McWays y Linux. Por lo que es versátil. Entonces es ligero, adecuado para aplicaciones GI de tamaño pequeño a mediano. Además, es impulsado por eventos. Apoye pobms impulsados por eventos como responder a camarillas o Estos son los puntos clave sobre Kiner. Ahora hablemos de ¿qué podemos construir con Kiner? Podemos crear herramientas de escritorio como calculadora para hacer apps, etcétera Podemos crear a partir de aplicaciones basadas como sistema de inicio de sesión. Podemos desarrollar juegos o simples programas interactivos. Podemos crear aplicaciones de dibujo o herramientas visuales. Es muy adecuado para aplicaciones GI de tamaño pequeño a mediano. Podría ser tu primer paso para crear una aplicación GI con lenguaje de programación Python. Por eso deberías aprender Kiner. Esto es solo Tutorial de Introducción de Kinder. En el siguiente tutorial, vamos a aprender cómo podemos instalar Kiner para diferentes plataformas Gracias por ver este estado para nuestro próximo tutorial. 3. Instalación de Tkinter: Hola, chicos. Bueno verte B. Este es el segundo tutorial relacionado KinterT este tutorial, vamos a aprender sobre cómo podemos instalar La mayoría de los casos kinter vienen preinstalados con Python. Puedes verificar si está disponible ejecutando esto en el intérprete de Python. Solo necesitas escribir Importar Ginter, entonces necesitas imprimir este estado De lo contrario, puedes imprimir cualquier cosa. Si no devolvemos ningún error en tu terminal, en ese caso, es decir que está funcionando. Lo instalé en su sistema. Déjame mostrarte la demostración. Como puedes ver, estamos en mi editor de código de estudio de usuario. Al principio, voy a importar el módulo Ginter. Importar Ginter TK Enter, este. Entonces voy a imprimir un comunicado. Imprimir. Dentro del doble curso, voy a escribir, Kinter, TK, Enter está funcionando Voy a establecer este archivo. Malestar este archivo, si golpeo, molesto este archivo, si presiono el botón Ejecutar, y como pueden ver está impreso, Kinter está funcionando porque está preinstalado con Python Por eso no necesitamos instalarlo. Si instalas Python usando el instalador oficial, Kiner ya está disponible Para verificarlo, simplemente escriba Python AM Ginter. Si lo escribe en su Windows Powershell, debería aparecer una pequeña ventana de la GUI de demostración. Déjame mostrarte. Como pueden ver, estoy en mi Shell de Windows Power. Si ejecuto este código dash, déjame mostrarte y luego presiono Enter, como puedes ver, aparecerá una ventana. Es para el propósito de demostración. Es media, inter está preinstalado con Python. la misma manera, si tu sistema operativo es MWs para McWskiner generalmente se incluye con Python en McWas. Si no es entonces solo tipo, están instalados EW. Python TK y luego escriba Python 3:00 A.M. Kiner. Se verificará que esté instalado en su sistema. Pero para el sistema operativo Linux, es posible que deba instalarlo manualmente usando APT. Simplemente escriba PsudoePTGT Abdet. Después PsudoePTGT instala Python tres TK. Y para las pruebas, solo en el tipo Python 3:00 A.M. Kinder. Así es como puedes instalar Kinter en tu sistema. Para este tutorial, sis, vamos a utilizar el sistema operativo Windows. Así que nuestros próximos todos los videos basados en el funcionamiento de Windows. Esto es para este tutorial. En el siguiente tutorial, vamos a enloquecer nuestra primera ventana inter. Así que gracias por ver este video, estad atentos para el siguiente tutorial. 4. Tu primera ventana Tkinter con bucle principal: Entonces este es el primer tutorial práctico relacionado con Kiner, y aquí vamos a construir nuestra primera ventana de Kinker Entonces, como puedes ver en mi directorio de trabajo actual, ya creo un archivo Python. Al principio, necesitamos importar el módulo. Tenemos que importar Kiner. Hay dos formas en las que podemos importar el módulo TK. Al principio, podemos importar de todo desde Kinter. Para eso solo necesitamos escribir desde Kiner TKNter voy a importar Star, va a importar todo, cada clase, cada función que esté dentro del módulo Pero hay otro método. Esta línea importa todas las clases y funciones necesarias de la biblioteca Kinter Además, puedes importar Ginter usando el nombre de Ali. Para eso necesitas escribir import Enter as TK. Este es el segundo método para importar KinterF ahora, me gustaría ir con el primer método, así que voy a comentar esta línea. No te preocupes. Lo explicaré más adelante en nuestros próximos tutoriales. Después de eso, necesitamos crear la ventana principal. Para crear la ventana principal, necesitamos definir una variable. En nuestro caso, voy a escribir root, root igual a aquí, necesitamos usar la instancia de clase T tipo T K y round versus a la clase. Aquí creamos una instancia de clase TK, que representa la ventana raíz de su aplicación. A continuación, tenemos que iniciar el bucle de eventos Ming. Para eso, aquí, voy a escribir root dot main loop y round brass. El método main event loop inicia el bucle de eventos kintered, que mantiene la ventana abierta y responde a la interacción del usuario hasta que se cierra Si configuro este archivo y ejecuto este código en mi terminal, va a abrir una ventana en blanco. Déjame mostrarte. Después de pulsar el botón Ejecutar, como se puede ver, aquí se abre una ventana en blanco. Ahora voy a asignar un título a esta ventana. Para eso para eso aquí escriba root dot title. Dentro de los versos redondos, voy a escribir, es simple Jim tipo GUI simple. De lo contrario, puedes escribir tu primer GI y necesitas configurar el archivo y ejecutar el código en tu terminal. Emite el código en tu terminal como puedes ver, ahora puedes ver el nombre de la ventana para este sencillo GY, y puedes notar que responde debido a este bucle principal Aquí creamos nuestra primera ventana GI en blanco con la ayuda de Python Kinder Ahora, hablemos de la función de bucle principal. La función de punto raíz Mino inicia el bucle de eventos de la GUI. Son formas de interacciones como clic, mecanografía, etcétera Siempre es mantener la ventana abierta hasta que se cierre manualmente. Sin ella, la ventana estaría flash o se cerraría instantáneamente. Si comento esta línea y configuro este archivo y ejecuto este código en mi terminal, ahora se puede notar que no abra la ventana. Básicamente, abrió la ventana, pero al instante cierra la ventana. Si lo vuelvo a ejecutar, se nota apenas se puede notar algo porque necesitamos este bucle principal para mantener abierta esta ventana Ese es el uso del bucle principal, y es importante. Esto es para este tutorial. En el siguiente tutorial, vamos a hablar de geometría. Quédate incluso para el siguiente tutorial. 5. Creación de una ventana principal: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con Python Kinter en esta sección, aprenderemos a administrar y personalizar la ventana principal de Kinter Estos conceptos fundamentales son esenciales para construir y pulir su aplicación GI fácil En nuestro tutorial anterior, aprendemos a crear la ventana principal. Para eso, necesitamos primero, necesitamos importar el módulo inter. Entonces escribe, importar TK enter, TK enter como TK. Entonces usando su nombre de clase, voy a crear una variable de instancia, y voy a llamarla raíz DV T. Raíz igual a T TtktLass es una clase y semicorón en esta línea y base redonda para cerrar y redondear base Esta línea crea el principal en raíz. Como sabes para ejecutar esta aplicación, necesitamos llamar a un evento root. Para eso, voy a escribir root dot main root. Básicamente, esto ejecutará la aplicación. Si ejecuto este código en mi terminal, va a crear una ventana en blanco. Esta es la ventana en blanco. Si quieres proporcionar un título a esta ventana, sí, puedes. Solo necesitas escribir, déjame mostrarte entre el vaso Ticket y el menú, necesitas escribir root el título Mc Inter app. Si configuro este archivo y ejecuto este código, como pueden ver, ahora este título está asignado a esta app de Inter. Ahora hablemos de la geometría. Quiero establecer el tamaño de la ventana, posición de la ventana y el icono de ventana. Para ello, necesitamos usar la función de geometría. Déjame mostrarte. Voy a escribir geometría de punto raíz. Aquí voy a definir el tamaño de nuestra ventana. Dentro de los códigos dobles, quiero definir el tamaño 800 X 600. Se va a establecer el tamaño de la ventana. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes ver, ahora puedes notar esta vez abrió la ventana mucho más grande. Después de eso, con el tamaño de esta ventana, voy a definir la posición de esta ventana donde va a abrir la ventana. Para eso, después de definir el tamaño con altura, voy a sumar, voy a sumar con 100. Es para Xxs y para las YxS voy a sumar con 50 Es para YxS. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes notar el resultado. A partir de los XXs proporcionará un hueco de 100 píxeles, y desde el YXS proporcionará un hueco de 50 píxeles la misma manera, si aumento el valor de YXS si lo hago 500 y este este archivo y vuelvo a ejecutar este código, ahora puedes notar esta vez abrió la ventana desde el Esta vez proporciona un espacio de 500 píxeles desde la parte superior y desde el laboratorio, proporciona 100 píxeles. Es así como podemos posicionar esta ventana. Podemos definir dónde se va a abrir en nuestra pantalla. Recuerda, primero, necesitamos proporcionar W, luego necesitamos proporcionar altura. Después de eso, necesitamos usar el signo de suma y necesitamos proporcionar el valor Xofte y luego el valor de compensación Y Es necesario seguir esta palabra con altura, X opsita e Y opuesta Ahora veamos cómo podemos configurar un icono a nuestra aplicación, nuestra aplicación GI. Para ello, necesitamos usar icono de la función de mapa de bits. Déjame mostrarte. Entonces para escribir, root, punto, icono Bitmap, icon bitmap Luego dentro del rebaje redondo necesitamos proporcionar la ruta del archivo. Dentro del doble curso, voy a escribir este icono nombre icon.co Recuerda, para el icono, siempre necesitamos usar la extensión punto ICO. De lo contrario, no va a funcionar. Así empatar CO en icon.co. Voy a establecer este archivo. Presiono establecer este archivo, vamos a ejecutar el código en nuestra terminal. Alguien ejecute este código en mi terminal y como puede ver, ahora puede ver el icono. Este es el icono que utilicé. Se trata de icono de descarga de archivos. En este tutorial, aprendemos cómo podemos establecer una dimensión a nuestra ventana, cómo podemos abrir nuestra Ventana en cierta posición y cómo podemos asignar un icono a nuestra aplicación. En la siguiente parte de este tutorial, vamos a hablar de Redimensionamiento de ventanas, límites máximos mínimos y modo de pantalla completa. Gracias por ver este video, Estén atentos para el próximo Tutorial. 6. Redimensionamiento de ventanas, límites mínimos: Hola, chicos. Encantado de verte de vuelta. Este es el segundo tutorial relatateKmer Como pueden ver, ahora, si ejecuto este código en mi terminal, se puede ver la ventana en esa posición. Ahora bien, si trato de cambiar el tamaño de la ventana, sí, es redimensionable sí, es redimensionable Podemos extender su ancho y extender su altura, pero podemos establecer límite. Déjame mostrarte. Aquí, voy a usar una función llamada redimensionable Algún tipo. Punto de raíz redimensionable Dentro de las rotondas voy a hacer modas. Tanto el valor cae, cae modas. Es para con, y a continuación, voy a pasar valor falso para altura, fads, y voy a establecer este archivo Después configuré este archivo, si ejecuto este código en mi terminal, y esta vez, si intento cambiar el tamaño de esta ventana, ya no es redimensionable ya no es redimensionable porque hacemos tanto el valor falso, pero si hago uno de los valores true, así que voy a hacer que el valor height value Entonces establece este archivo y otro código en mi terminal. Ahora puedes notar que podemos extender la altura de esta ventana. Podemos extender la altura de esta ventana. Pero si trato de extender el ancho de esta ventana, no va a funcionar porque esta vez hacemos width value false y height value true. Entonces podemos extender la altura, pero no podemos extender el ancho de esta ventana. Ahora, hablemos de la función de tamaño mínimo y tamaño máximo. Entonces voy a comentar esta línea, y aquí, voy a usar primero, voy a usar tamaño mínimo, tipo verano, raíz, tamaño medio superior, MIN, tamaño mínimo, y aquí, voy a establecer la dimensión. Aquí lo voy a decir dimensión mínima, 400 por 300 y voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal y trato de reducir el tamaño de la ventana, ahora puedes notar en cierto punto deja de redimensionar la ventana porque su tamaño mínimo, usamos 400 y para la altura, usamos 300. No podemos reducir la altura y anchura de esta ventana. Entonces así es como podemos establecer el tamaño mínimo de esta ventana. De la misma manera, podemos establecer el tamaño máximo. Voy a duplicar esta línea y en vez de tamaño mínimo, voy a usar tamaño máximo. Entonces escribe el tamaño máximo máximo, y aquí, voy a decir dimensión. Por ancho, voy a tomar 1,200. Y para la altura, aquí voy a tomar 800. Voy a poner esta pila y voy a ejecutar este código de nuevo. Ahora bien, si trato de aumentar dentro de la altura en cierto punto, deja de aumentar la altura y rueda de esta ventana. Ahora, el ancho se convierte en 1,200 píxeles y la altura se convierte en 800 píxeles. No podemos ir más allá porque aquí dijimos el límite máximo. Entonces así es como podemos establecer el tamaño máximo y mínimo de esta ventana. Espero que ahora quede claro 40. Ahora, hablemos del voto a pantalla completa. Ahora antes de aplicar la pantalla completa, voy a comentar tanto las líneas, tamaño máximo y tamaño mínimo porque necesitamos llenar la condición. Por eso necesitamos comentar estas líneas. Y además, puedes comentar sobre geometría, pero no la necesitas para aplicar la pantalla completa, voy a escribir root, root, función de atributo, atributos luego dentro de los versos redondos aquí dentro del curso único, voy a escribir pantalla completa. Pantalla completa. Entonces voy a entonces voy a hacer realidad la condición. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, no hay problema. Sí, va a hacer nuestra ventana a pantalla completa, pero no hay forma de salir de la pantalla completa. Entonces voy a ejecutar este código en mi terminal, y después de ejecutar este código en nuestro terminal, como pueden ver, crea la pantalla completa. Ahora crea ventana de pantalla completa, pero no hay forma de salir de la ventana porque no establecemos ninguna condición para eso. De lo contrario, no establecemos lo contrario, no creamos ninguna función para eso. Y aquí uso múltiples pantallas, así que desde mi otra pantalla, puedo cerrar esta ventana. Entonces desde mi barra de remolcadores, voy a cerrar la ventana Y salir del programa. Ahora la pregunta es, entonces ¿cómo podemos usar la pantalla completa? Cómo podemos salir de la pantalla completa. Para eso, necesitamos crear una función. Entonces voy a crear una función. Voy a definir una función y nuestro nombre de función es, y nuestro nombre de función es salir a pantalla completa. Entonces voy a definir la función usando DF DF y nuestro nombre de función es salir a pantalla completa. Entonces dentro de la ronda dice aquí, voy a hacer evento aquí, voy a hacer evento igual a ninguno. Entonces dentro de la función Exit four screen, aquí, voy a usar este método, Good dot attribute. Copia este y lo voy a poner aquí y lo voy a quitar de este lugar. Ahora la pregunta es por qué uso este parámetro opcional en esta función evento igual a ninguno? Porque Kinter elogia automáticamente un objeto de evento cuando se presiona una tecla Cuando alabamos cualquier clave, Kinter piensa que es un evento, así que por defecto, la hacemos ninguna Y ahora necesitamos vincularlo y llamar a la palabra clave event. Para ese rebaño, voy a usar el método bind. No te preocupes. Te explicaré más adelante por qué uso bind. Entonces escribe root, dot, bind method. Enlaza, luego dentro de las prensas redondas, ella dentro del doble código menor que mayor que el interior de ella. Aquí voy a teclear scape. Quiero decir cuando alabo la tecla scape, entonces quiero salir a pantalla completa, algún tipo salir función de pantalla completa, llamo a salir función de pantalla completa. Voy a establecer este archivo. Antes de configurar este archivo, déjame corregir algo aquí, tenemos que salir de la pantalla completa. Tenemos que hacerlo falso, no verdadero, falso. Vas a salir de la pantalla completa, y luego necesitamos activar la pantalla completa usando los mismos métodos de atributo. Copo esta línea de atributos de punto raíz, y lo voy a pegar aquí. Y esta vez, voy a hacerlo realidad. Entonces primero, va a activar el modo de pantalla completa. Entonces cada vez que alabo a Scapekey en mi teclado, va a salir de la Entonces para configurar este archivo, si ejecuto este código en mi terminal, como pueden ver, primero, activa el modo de pantalla completa. Y cada vez que alabo a Scapekey en mi teclado, como se puede ver sale de la pantalla Entonces así es como podemos abrir nuestra ventana en diferentes geometrías. Espero que ahora te quede claro cómo funciona la geometría en Kinter en el siguiente tutorial, vamos a trabajar en magos básicos de Ginter Así que gracias por ver este video, estad atentos para un próximo tutorial. 7. Widget de etiqueta Tkinter: Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con otro tutorial relacionado kinter. Y hoy en este tutorial, vamos a hablar de asistente de etiquetas. Asistente de etiquetas utilizado para mostrar texto o imágenes en una aplicación GUI. Es uno de los hechiceros más básicos. Y si hablo de su característica clave, entonces se utiliza para mostrar texto e imágenes estáticas. Personaliza la apariencia usando propiedades como fuente, color, tamaño, etcétera Puede encuestar marcador de posición o proporcionar comentarios en una aplicación Y si hablamos de su sintaxis, primero, cuando se escribe label method, luego dentro de las runbs necesitamos proporcionar la ventana principal de lo contrario frame name Entonces podemos usar estas propiedades. De lo contrario, podemos usar estos parámetros, texto y otras opciones. Y tenemos varias opciones de configuración como fuente, fondo, primer plano, etcétera. Ahora hablemos de sus opciones. Tenemos que decir siete opción en asistente de Nivel. Texto, imagen, fuente, fondo, para relleno X, relleno Y. En nuestra primera opción, se disexta en la etiqueta, y usando la opción de imagen, es disparimage en lugar Entonces tenemos fuente. Podemos definir el estilo de fuente usándolo. Entonces tenemos color de fondo. Entonces tenemos color de primer plano. Color de primer plano significa color de texto. Entonces tenemos relleno. Se proporciona relleno horizontal alrededor del contenido de la etiqueta. Entonces tenemos relleno Y. Es proporcionar relleno vertical alrededor del contenido de la etiqueta. Entonces, sin perder el tiempo, comencemos la práctica y veamos cómo podemos usar esto es. Como pueden ver, estamos en mi editor de código visual studio. Al principio, voy a introducir el, el módulo TK. Tipo Hemo, Importación, Tinte como TK. De lo contrario, puedes importar todo el programa usando start. Y si quieres importar todo el programa del módulo TK para eso, necesitas empatar desde Kinkerimport, star Se va a importar todo el método, todas las clases de este módulo. Voy a comentar la línea anterior. Entonces necesitamos crear la ventana principal. Para crear primero la ventana principal, voy a declarar una variable root, root igual a esta vez, voy a escribir decaimiento. Se va a crear la ventana principal. A continuación, voy a asignar un título a esta ventana. Para eso, voy a escribir root dot title. Después dentro de las prensas redondas, tipo hemo, ejemplo de etiqueta Kiner A continuación, voy a definir la geometría de esta ventana. Voy a escribir root, geometría dentro de los roundersses, dentro del doble curso, voy a escribir 300 X 200 y además necesitas ejecutar el loop principal para ejecutar la aplicación Él escribe root main loop, main loops uno. Si ejecuto este código en mi terminal, como pueden ver, aquí crea una ventana. Y ahora en esta ventana, voy a poner un texto. Para eso, vamos a usar asistente de nivel. Alguien que elimine esta ventana, y aquí voy a escribir una variable, y nuestro varim es de nivel Nivel igual a aquí, voy a teclear nivel asistente. Etiquetar uno. Después dentro de las prensas redondas, al principio, necesitamos proporcionar el windowname como nombre de ventana, voy a pasar root Entonces tenemos que proporcionar el texto. El texto que quiero pasar en esta etiqueta. Necesitamos escribir este atributo name text. Texto igual a aquí, voy a pasar hola Tinter Entonces voy a usar la fuente. Para fuente, cuándo escribir, fuente, igual a dentro la base redonda, dentro del doble curso, primero, necesitamos definir qué tipo de letra vamos a usar, y voy a usar fuente aérea. Entonces necesitamos definir el tamaño de la fuente. Como tamaño de fuente, voy a definir 16. Atrocma siguiente, voy a pasar por color largo. Para el color pulmonar, voy a usar G, G igual y aquí voy a usar color blanco. Blanco. Entonces voy a usar color de fondo, BG, BG, igual al interior de los códigos dobles, tipo hemo, color azul Voy a establecer este archivo. Trastornar este archivo, ejecutar el código. Si ejecuto este código, como pueden ver, no muestra nada. No muestro el texto porque no empacamos esta etiqueta. Ahora tenemos que empacar esta etiqueta. Aquí necesitamos usar un método llamar etiqueta punto PAC. Entonces dentro del redondo dice: Por ahora, no voy a pasar nada, y voy a configurar este archivo, y voy a ejecutar este código Después de ejecutar este código, ahora puedes ver el texto. Aquí puedes notar que nuestro tamaño de fuente es 16 píxeles y nuestro estilo de fuente es aéreo. Y como color de fondo, decimos color azul, y como color forgon, aquí decimos color blanco Y ahora quiero agregar poco relleno desde la dirección XSS, también dirección YxS Superca Hendotype Padg padix igual a TAM. Coma. Como voy a asignar relleno Y. Pad, Y igual a cinco. Si ejecutamos este código en mi terminal, ahora lo puedes ver en padding. Se a diez píxeles de relleno de la dirección Xs y cinco píxeles de relleno de la dirección Y xs. Además, puedes asignar relleno cuando pongas esta etiqueta. Algo así, déjame mostrarte pad Y. voy a agregar pad Y, y aquí voy a agregar 20. Y voy a configurar este archivo y volver a ejecutar este código. Alrededor de este código, se puede ver el resultado. Ahora agrega relleno alrededor de la etiqueta, no dentro de la etiqueta. la misma manera, puedes agregar pada cuando empaques esta etiqueta Ahora, déjame explicarte el código línea por línea. Entonces primero, puedes ver que creamos una variable, root igual a TK. Crea la ventana principal de la aplicación. Después asignamos un título. Básicamente, se va a establecer un título de la ventana. Después asignamos geometría. Especifico el tamaño de la ventana. Después de eso, vamos a saltar a la configuración de la etiqueta. Al principio, pasamos en qué ventana, quiero crear la espuma, que es ruta entonces usamos propiedad de texto Se va a especificar el texto que quiero mostrar en esta ventana. Entonces usamos C, va a establecer la fuente, estilo de fuente y tamaño de fuente. Entonces tenemos para tierra. Se va a establecer el color del texto. Entonces tenemos los antecedentes. Voy a establecer el color de fondo. Entonces tenemos padx y Pad y. padex va a agregar relleno en la dirección, y pad y va a agregar relleno en dirección YxS Después de eso, empacamos la etiqueta usando el método label dot pack. Se va a colocar la etiqueta en la ventana. Y de lo contrario, si creas la etiqueta y no colocas la etiqueta en la ventana, no va a mostrar la etiqueta. Y también agregamos poco relleno desde la dirección YxS. Ahora veamos cómo podemos mostrar una imagen usando el asistente de etiquetas. Como puedes ver en mi directorio de trabajo actual, tenemos a dos imagen, una imagen GPG y otra es imagen PNG Y si abro esta imagen PNG, es icono, y su resolución es 512 por 512. Entonces voy a usar esta imagen, esta imagen PNG. Entonces aquí, voy a ampliar el tamaño de la geometría. Aquí, voy a teclear 700 por 700. Voy a establecer este archivo. Ahora voy a mostrar esta imagen en esta ventana raíz. Para eso, necesitamos usar un método, y nuestro nombre de método es photo Image method. Al principio, voy a declarar una variable y nuestro nombre de variable es image. Imagen, Imagen igual a, necesitamos usar un método llamado imagen fotográfica. Así que escribe foto imagen. Es el método es el método de Kinter. Después dentro de la carrera brcs. Tenemos que proporcionar el archivo, la ruta del archivo. ¿Qué imagen vamos a utilizar? Voy a usar atributo llamado archivo. Archivo igual al interior del Rundss como puedes ver en mi directorio de trabajo actual, teníamos esta imagen Entonces quiero copiar este nombre de imagen, y aquí voy a paginar el nombre de la imagen Png underscoimage punto PNG Básicamente en esta variable, cargamos esta imagen usando el método photo image. Y ahora necesitamos crear un nivel usando esta imagen. Para eso, voy a declarar otra variable, label, y esta es el nivel dos. Nivel dos igual a dos. Necesitamos usar el método level level. Luego dentro del proceso de ejecución, al principio, necesitamos proporcionar el nombre de la ventana que es root. Entonces tenemos que proporcionar la imagen. Entonces escribe imagen igual a nuestra variable de imagen, esta, para rectificar la variable, voy a cambiar los nombres de las variables Aquí aquí voy a añadir subrayado. Imagen underscoe también en pase underscoe aquí. Después de eso, necesitamos empacar esta etiqueta. Voy a duplicar esta línea y aquí voy a añadir dos. Este es el Nivel dos. Voy a establecer este archivo. Ahora vamos a ejecutar el código y ver qué va a cráter. Después de ejecutar este código en mi terminal, como pueden ver, se muestra esta imagen usando el asistente de nivel. Y también agrega relleno de 20 píxeles en dirección YXS. Y una cosa que debes recordar, B default, B Default Ginter soportan formato PNG, formato GIF Pero no soporta imágenes en formato JPG. Déjame mostrarte. Voy a eliminar esta terminal, y voy a reemplazar la ruta del archivo. Duplico esta línea y comento la anterior. T tiempo voy a utilizar esta imagen, esta imagen de cat dot JPG. Aquí voy a copiar el nombre del archivo y lo voy a poner aquí y también voy a pasar la extensión dot JPG, y voy a configurar este archivo. Si trato de ejecutar este código en mi terminal, déjame mostrarte. Voy a hacer a través de un errod porque como te dije, no soportamos imágenes JPG Para soportar otras imágenes de formato como el formato JPG, necesario utilizar otro módulo, que es el módulo Pillow. Déjame mostrarte cómo podemos usarlo. Al principio, necesitas descargar el módulo en tu sistema. Voy a abrir el cobertizo de Window Power. Como pueden ver, estamos en mi Ventana Powershion. Y para descargar el módulo Pillow, solo necesitas escribir, peep, instalar Pillow, PIL Ow, y luego necesitas golpear Enter Después de golpear Enter, como puedes ver una impresión, requisito ya satisfecho porque ya descargo este paquete, pero necesitas completar el proceso de descarga. Después de eso, puedes usar este nodu Pillow es una biblioteca de imágenes Python de este módulo Pillow, necesitamos importar el método total de dos, tictac de imagen e imagen como una forma corta, almohada conocida como Aquí voy a escribir de Píldora. Yo voy a hacerlo. Voy a importar imagen. Además, voy a importar tictac de imagen. Éste. Ahora voy a comentar esta línea porque en ese proceso no podemos importar imagen GPG Aquí, voy a escribir un solo comando lend y voy a escribir para imágenes JPG. Al principio, voy a crear una variable llamada image image undersco Voy a usar la misma variable. De lo contrario, voy a configurarlo imagen JPG. Imagen JPG, esta es nuestra variable e igual a voy a usar un método. Necesitamos usar un método del módulo Pillow, escribir image dot y nuestro nombre de método es abierto. Y dentro de las gramíneas redondas, dentro de los códigos dobles, necesitamos pasar la ruta del archivo Y como pueden ver, vamos a pasar esta ruta de archivo, esta imagen cat dot JBIG Entonces aquí se puede ver, utilizamos el método, imagen de foto. Es de Tintermdule, pero esta vez necesitamos usar imagen fotográfica del Aquí, voy a escribir foto. Igual a imagen imagen de foto de punto. Después dentro de las rondas y dentro de las rondas voy a pasar la ruta del archivo de imagen, que es Image underscoe Copio el nombre de la variable y lo voy a pasar aquí. Después de eso, voy a mostrar esta foto en este nivel. Entonces Hemo escriba foto, y voy a configurar este archivo Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes verlo mostrar la imagen GPG Ahora bien, si quieres cambiar el tamaño de esta imagen, sí, puedes. Déjame mostrarte cómo puedes redimensionarlo. Para ello, se puede utilizar el método de redimensionamiento. Déjame mostrarte cómo. Voy a propina imagen, subrayado JPG, igual a imagen, subrayado Aquí voy a usar el método resize para cambiar el tamaño. Siguiente dentro de los errores, tenemos que asignar la dimensión, y quiero hacerla 300 por 300 Después de eso, hasta establecer la dimensión de esta imagen. Si hago este código en mi terminal, como pueden ver, cambia el tamaño de la imagen Y además, si quieres rotar esta imagen, sí, puedes. Para eso, voy a duplicar esta línea y aquí, voy a escribir UnderscoeGPG dot Girar. El interior de las rondas hemo tipo 45 Si configuro este archivo y ejecuto este código en mi terminal, como pueden ver, gira la imagen a 45 grados. Así es como podemos usar el módulo Pillow con Kinter. Nos va a permitir mostrar imágenes JPG y por defecto, Kinter solo admite imágenes PNG y GIF Es necesario que recuerdes eso. Esto es para este tutorial en el siguiente tutorial, vamos a hablar de otra visita. Vamos a hablar de visita marco. Gracias por ver este video, Estadio por nuestro próximo tutorial. 8. Widget de marco Tkinter: Hola, chicos, es bueno volver a verles. Una vez más, estoy de vuelta con otro tutorial relacionado con KINREtay en este tutorial, vamos a aprender asistente de marco En nuestro tutorial anterior, aprenderemos sobre el asistente de nivel y en este tutorial, vamos a aprender sobre el asistente de marcos. Un marco en Kinter es un asistente de contenedor, utilizado para agrupar y organizar otro asistente Actúa como una resina rectangular en la pantalla donde puedes colocar otro asistente, como botones, etiquetas y archivos de texto. Los marcos son especialmente útiles para crear diseños complejos dividiendo la ventana en secciones manejables Si hablamos de característica clave del marco, podemos usarlo como contenedor. Podemos usarlo para estilizar, de lo contrario, crianza de los hijos. Los marcos se utilizan principalmente como contenedores para organizar jerarquías establecidas También, podemos usarlo para sind. Puede personalizar el aspecto del marco usando propiedades como el color de fondo, ancho del borde y el stype en relieve Y también podemos usarlo para parente. Un marco puede actuar como padre de otra visita, lo que le permite seguir fotogramas para diseños complejos. Si hablo de sus atributos comunes como fondo, se utiliza para el color de fondo del marco con altura. Utilizándolo, podemos establecer la dimensión de este marco. También, podemos establecer alivio. Especifico el estilo de borde, como plano, elevado, hundido, manoseado, Entonces tenemos otro atributo llamado ancho de borde. Dice el ancho del borde. Entonces comencemos la práctica y veamos cómo podemos aplicar estos atributos. Entonces como pueden ver, estamos en mi editor de código de estudio de resultados. Al principio, voy a importar nuestro módulo. Entonces voy a escribir desde inter pK Enter. Quiero importar, importar. Quiero ingresar todos los programas, así que voy a importar estrella. Entonces necesitamos crear la ventana principal usando el objeto TK. Entonces escriba, raíz igual a TK. Y también, ya sabes, necesitamos ejecutar el bucle de eventos Tinker, el bucle principal Para ese tipo de héroe, root, dot mean loop. Entonces al principio, voy a establecer la geometría. Geometría de punto de raíz. Dentro del latón redondo, dentro de los códigos dobles aquí, voy a asignar 700 por 700 g 300 con este 700 y la altura es de 300 píxeles. Además, si quieres asignar un título a esta ventana, sí, puedes. Así que vamos a asignar un título. Entonces aquí voy a escribir, root dot title. Y dentro de los vestidos redondos, dentro de los códigos dobles, voy a escribir marco ejemplo. Ahora, vamos a ejecutar el código y ver qué escribió. Entonces como puedes ver, crea una ventana, nombre, ejemplo de marco. Y aquí dijimos la dimensión, 700 por 300 píxeles. Y ahora voy a crear el marco principal. Para eso, voy a declarar una variable llamada frame, frame igual a aquí necesitamos usar una función llamada frame. Dentro del latón redondo, al principio, necesitamos pasar la fuente en la que ventana quiero mostrar el marco que es root. Esta es la ventana raíz, entonces voy a asignar mojado a este marco. Entonces tecleamos nosotros, dobladillo para asignar 200 píxeles. Entonces voy a asignar altura, altura. También voy a asignar 200 píxeles. Entonces voy a asignar frontera con frontera con, y aquí voy a asignar frontera con fib Como voy a usar otro atributo. Aquí quiero aplicar el estilo de borde. Para aplicar el estilo de borde, necesitamos usar la propiedad de alivio. Alivio. Alivio igual a agrupado. Por ahora, voy a aplicar el estilo de borde a tientas. Entonces como sabes, ter crear el marco, también necesitas empacar este marco. Para eso, voy a atar frame dot frame dot dot PAC mtHodpac dentro de las rotondas si quieres aplicar algo de pading Supongamos que quiero aplicar pad en dirección Xs, pad, X, pad x, diez píxeles. Entonces también, voy a aplicar pad Y, pad, Y, diez pixel. Y voy a poner este archivo. Molestar este archivo si ejecuto este código en mi terminal, aquí puedes ver el resultado. Aquí puedes ver, este es el marco que creamos en esta ventana. Y si quieres aplicar color de fondo para eso, necesitas escribir BG. Entonces aquí voy a escribir B, G, fondo. Para el color de fondo, quiero aplicar color gris. Entonces dentro del código doble, voy a escribir gris, y voy a configurar este archivo y volver ejecutar este código en mi terminal. Ahora puedes ver el resultado. Este es el marco que creamos. Ahora agreguemos algo de texto en este marco. Sí, puedes agregar texto en este marco usando etiqueta. Déjame mostrarte. Entonces aquí mono escribo un nombre de variable para la etiqueta. Su tipo L, L igual a etiqueta. Etiqueta dentro de las rotondas primero, necesitamos proporcionar el marco en el que marco quiero mostrar esta etiqueta Entonces nuestro nombre de marco es y nuestro nombre de variable de marco es frame. AVTypeFrame. Entonces tenemos que pasar el texto. ¿Qué texto quiero mostrar en esta etiqueta? Por lo tanto, escriba propiedad de texto. Texto igual al interior de los códigos dobles. Voy a escribir hola palabra. Y si quieres asignar color encontrado, supongamos como G, y quiero asignar para redondo color blanco. Después de crear la etiqueta, también, es necesario empacar esta etiqueta. Para eso, haz el tipo dot pack Math, empaca. Y si quieres asignar panning, sí, puedes. Entonces por ahora, no voy a asignar ningún padding y voy a configurar este archivo y mostrar esto y ejecutar este código en mi terminal. A ejecutar este código en mi terminal, como pueden ver, esto es lo que crea. Ahora tal vez te preguntes qué está pasando aquí. Como puedes ver, colocó el texto dentro de este marco con éxito, pero no aplica los atributos que aplicamos en nuestro marco, como wid height, color de fondo, etcétera Pero aplica el estilo boda porque si usas nivel dentro del marco, entonces necesitas aplicar estos atributos en este atributo de nivel. Déjame mostrarte. Entonces por ahora, voy a revocar ancho y alto de fondo No lo necesito. Voy a aplicar color de fondo a esta etiqueta, BG. Antecedentes. Para fondo, voy a usar color gris, y voy a satisfacer. Si ejecuto este código en mi terminal, ahora puedes verlo aplicar el color de fondo a esta etiqueta. Entonces si quieres asignar relleno, sí, puedes. Y ahora decido que quiero empacar este nivel de labio lateral de esta ventana. Para eso, aquí podemos definir el lado de este marco cuando empacamos el marco. Déjame mostrarte. Hemotipo lado, lado igual a y Hemotipo lept. Quiero alinear este marco en el lado let de esta ventana. Si configuro este archivo y vuelvo a ejecutar este código, puedes ver el resultado Como puedes ver esta vez alineó el marco del lado izquierdo de esta ventana. Ahora quiero llenar este cuadro en dirección Xs. De esta manera a esta manera, déjame mostrarte cómo. Aquí voy a usar una propiedad llamada llenar. siento igual a dentro de los códigos dobles, voy a usar Y. quiero llenarlo en dirección YxS Ahora bien, si cruzo esta terminal y vuelvo a ejecutar este código, pero antes de ejecutar este código, necesitamos pasar coma hair y sub este archivo y ejecutar este código en mi necesitamos pasar coma hair y sub este archivo y ejecutar este código en Ahora puedes ver que llenó el cuadro en dirección YxS. Si quito el relleno de toda la dirección, déjame mostrarte si quito los rellenos y luego configuro este archivo nuevamente y ejecuto este código, ahora puedes verlo quitar el relleno de cada dirección Si trato de aumentar la altura de este marco, déjame mostrarte, como puedes ver, cuando aumente la altura, también aumenta la altura del marco porque Hay campo este marco en la dicción YX Básicamente, Harry crea una sware de NO ventana usando marco Wist Y dentro de este asistente de marco, puedes pasar botón de etcétera Si tienes conocimientos sobre TML, entonces podemos comparar este marco con un elemento profundo Básicamente, se trata de actuar como un contenedor. Y recuerda, aquí puedes aplicar diferentes tipos de estilo de borde, como Grobe, hundido, plano, elevado, y muchos Y si quieres mover este marco en el lado derecho, justo en el lado Ty igual a derecho cuando etiquetas el marco. Este es el video de introducción del asistente de marco, cómo podemos usarlo y cómo podemos aplicarlo. En el siguiente tutorial, vamos a hablar sobre el asistente de botones y cómo podemos usar el botón Asistente con marco. Así que gracias por ver este video, estén atentos para nuestro próximo tutorial. 9. Widget del botón Tkinter: Oigan, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con Kiner. Y hoy en este tutorial, vamos a aprender asistente de botones. En TNCR, se utiliza un asistente de botón para crear un botón en el que el usuario puede hacer clic para activar una acción o evento específico en la aplicación GI El asistente de botones vino con varias opciones configurables, lo que le permite personalizar su apariencia y comportamiento. En una sola oración, podemos desencadenar cualquier acción o evento usando botón. Si se habla de expansión del asistente de botones, lo contrario propiedades, viene con propiedad de texto, propiedad comando dentro de la propiedad de altura, propiedad fondo de primer plano, propiedad fuente y propiedad de estado Usando la propiedad del texto, podemos mostrar la etiqueta en el botón y usando la propiedad de comando, una función o método a ejecutar cuando se hace clic en el botón Usando dentro de la altura, podemos definir el tamaño del botón. Usando forgon y fondo, podemos establecer el color olvidado y de fondo del botón Si quieres definir el texto del botón, en ese caso, necesitas usar la propiedad de fuente. Entonces tenemos propiedad estatal. Podemos definir el estado del botón. Podría ser normal, de lo contrario desactivar, y normal es el modo predeterminado. Ahora, comencemos la práctica y veamos cómo podemos usar el botón Wizard. Entonces como pueden ver, estamos en mi editor de código Wizard Studio, y al principio, voy a importar nuestro módulo TK, algún tipo, importar, TK incurrir como TK De lo contrario, si quieres importar todo el pom, entonces puedes importar start. Ahora, necesitamos definir una función, una función a llamar cuando se patea el botón. Para eso, voy a escribir DV y nuestro nombre de función es button kick. De lo contrario, botón semana. Botón de subrayado Dentro de las RoundResf ahora, no voy a pasar ningún parámetro, luego dentro de la función, voy a imprimir un nivel Voy a mostrar un nivel. Entonces aquí voy a escribir level dot config. Dentro del rondress voy a pasar el texto. Texto igual al clic de botón. Ahora puedes ver que está mostrando advertencia porque no definimos esta variable. No te preocupes. Voy a definir la letra variable. Luego después de crear la función, necesitamos crear la ventana principal. Así que para declarar la raíz igual a la función TK TK. Se va a crear un objeto TK. Entonces voy a definir un título. Entonces para escribir root GOT title, dentro de los vestidos redondos, dentro de los dobles goodes voy a escribir ejemplo de botón Tinker A continuación, voy a definir la geometría de esta ventana. Para eso, voy a escribir root dot Geometry. Geometría de puntos dentro de las llaves redondas. Aquí voy a definir 300 por X 200. Entonces necesitamos definir el nivel. Voy a declarar la variable de nivel. Nivel igual a etiqueta de punto T. Entonces dentro del proceso redondo, quiero des este nivel en nuestras ventanas raíz. Voy a escribir el nombre de la ventana root. Entonces tenemos que pasar el texto. Texto igual a aquí voy a escribir, presione el botón ser entonces voy a declarar la fuente. Fontig dos dentro de las prensas redondas, quiero usar fuente aérea Además, tenemos que declarar el tamaño de fuente, así que voy a pasar 14 píxeles. Entonces, para crear esta etiqueta también en empacar esta etiqueta. Para eso, voy a escribir label dot pac method, pack. También quiero definir algo de relleno en dirección YxS. Voy a escribir pad, Y, diez píxeles, de lo contrario, diez puntos. Para ejecutar la aplicación, voy a definir el bucle principal. Voy a escribir root dot main loop. Y antes de configurar este archivo y ejecutar este código en mi terminal, como pueden ver, aquí, necesitamos escribir TK K en letra minúscula, esta. Y voy a volver a configurar este archivo y ejecutar este código en mi terminal. Después de ejecutar este código en mi terminal, se puede ver la ventana. Presiona el botón de abajo. Aquí aún no creamos el botón. Ahora voy a crear el botón debajo del texto. Para eso, voy a usar el asistente de botones. Al principio, voy a definir una variable llamada button, button equal to PK dart button, button Nub Después dentro de las rotondas, al principio, necesitamos definir la ventana en la que ventana quiero mostrar el botón En nuestro caso, root. Entonces necesitamos definir el texto, el texto del botón. Suo tipo texto, igual al interior del doble des, Imurutype click M. Click Me. A continuación, necesitamos definir command, la propiedad command. Comando igual a, aquí necesitamos llamar a la función. De lo contrario el evento. Como puedes ver, ya creamos un evento y nombre de nuestro evento está en el botón click. Hemotipo en patada de botón de subrayado. Recuerda, cuando llamas a este método de lo contrario función, no necesitas proporcionar llaves redondas, necesitas llamar al nombre de la función Después de la coma, puede definir la fuente. Fuente tipo hemo. Dentro de la cotización, voy a usar la fuente Aerial. Aéreo. Afra coma, quiero definir el tamaño de fuente, así que voy a pasar 12 Entonces voy a decir el color de fondo, BG. Para el color de fondo, voy a usar azul claro. Aquí definimos el color de fondo. Después de eso, voy a definir el forron color AG. Para color redondo, igual a, y quiero asignar para el color de la habitación ese color. Y como sabes, después de crear el botón, también, necesitas empacarlo usando el método pack. Entonces aquí voy a escribir button dot, pack. Y si quieres agregar algo de relleno, sí, puedes. Entonces aquí voy a escribir pad Y. quiero proporcionar relleno en dirección YX, y aquí voy a pasar 20 píxeles Voy a establecer este archivo. Ahora podrías tener duda, ¿qué va a hacer básicamente nuestro botón? Básicamente, cuando haga clic en este botón, va a reemplazar este texto de etiqueta. Se va a presionar el botón debajo de él, este botón de texto hizo clic porque aquí configuré esta etiqueta en esta función Ahora, guardemos el archivo y ejecutemos este código en nuestra terminal. Después de ejecutar este código en nuestra terminal, como pueden ver en nuestra ventana, tenemos el botón, y nuestro nombre de botón es click me. Entonces si hago clic en este botón, déjame mostrarte, como puedes ver, reemplazó el texto. Yo reemplazo con clic de botón porque activó la función. Se activó en la función de clic de botón, y nuestra función configuró este texto. A continuación, te voy a mostrar ¿cómo podemos usar este asistente de botones con asistente de marco? ¿Cómo podemos insertar el botón dentro del marco? Para eso, voy a crear un marco después de esa etiqueta. Y nuestro nombre de marco es marco de subrayado de marco de botón, igual al método de marco de punto TK, marco Luego dentro del latón redondo, al principio, necesitamos proporcionar el windowam en que ventana quiero mostrar este marco, que es root, y luego hay que establecer el color de fondo, BG Fondo igual a, y quiero decir color gris claro. Gris claro. A continuación, voy a establecer el estilo de borde sm type relief. Alivio igual a TK, y voy a usar planteado éste. A Voy a poner botella con borde con, y voy a ponerla también. Entonces también, necesitamos empacar este tipo de marco inferior botón, marco, punto, método de empaque. Entonces dentro del sujetador redondo dice, al principio, voy a proporcionar relleno Y, pad, Y, Padi igual a 20, coma, luego voy a poner Padix igual a 20. A continuación, voy a llenarlo y a continuación voy a llenar éste. Sentirse igual a hemos Tk punto ambos. El siguiente inmueble que voy a usar expandir, expandir, igual a verdadero. Si ejecuto este código en mi terminal, como pueden ver, él creará el marco y necesitamos mover este botón dentro de este marco. Para eso en nuestro asistente de botones, necesitamos pasar el nombre del marco del botón. Esta vez, no voy a pasar de raíz. Voy a reemplazar root con este marco de botón. Entonces copio el nombre muy bien, y lo voy a pegar aquí y voy a poner este archivo. Si configuro este archivo y está codificando mi terminal, como pueden ver, esta vez, agrega el botón dentro de este marco. Y si hago clic en este botón, como pueden ver, todavía está funcionado. Entonces así es como podemos usar el botón Asistente con asistente de marco. Entonces esto es todo para este tutorial. Gracias por ver este video. Estén atentos para nuestro próximo tutorial. 10. Widget de entrada a Tkinter: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con el asistente de Kinter Hoy en este tutorial, vamos a aprender asistente de entrada. Es uno de los magos más importantes de Kinter. El asistente de entrada en Kinter se utiliza para aceptar la entrada de texto de una sola línea del usuario Se utiliza comúnmente para introducir nombres, contraseña, correos electrónicos, número, etcétera Si hablo de su sintaxis, necesitas escribir la entrada del nombre del método, entonces necesitas pasar el muster Quiero decir el nombre del continente padre donde quieres poner la entrada y luego necesitas pasar la opción. Opciones para configurar parámetros para personalizar la visita, como fuente, hierba, fondo, primer plano, justificar arrecife etcétera. Si hablo de opciones de visita de entrada, puedes usar fondo, primer plano, fuente, hierba, show, se usa para enmascarar caracteres, como para contraseña, usamos signo de estrella Luego toma variable se asocia con la variable inter string para establecer y valores de puerta. Entonces tenemos estados. Él se puede pasar normal divisible o al azar Entonces había justificado para propósito de alineación, realmente para estilo de borde, y por fin, tenemos V para controlar el grosor del borde. Comencemos la práctica y veamos cómo podemos usar el asistente de entrada. Entonces como puedes ver, on minimiza el editor de código de estudio. Primero, importo el módulo kinder. Entonces, creo la clase T. Después creo la ventana principal. Después de eso, le asigno un título, ejemplo de asistente de entrada. Después estableces la geometría de Ventana con 300 y altura 200. Después de eso, ejecutamos el bucle del evento principal. Siempre que pasemos algún dato en nuestro campo de entrada, necesitamos guardarlo. Para eso, necesitamos una variable de cadena. Aquí voy a declarar una variable llamada nombre subrayado Y. Nombre igual a, voy a definir una variable de cadena. String v Eso es todo. Básicamente, la variable de cadena es una clase de variable kinker Se utiliza para vincular dinámicamente el asistente de entrada con una variable. Ahora, vamos a crear un asistente de entrada en Owindo. Voy a escribir entrada. Entrada igual a aquí, voy a llamar a la entrada es una entrada de clase. Entonces dentro del redondo dice, primero, tenemos que definir, quiero decir el contenedor padre En nuestro caso, es raíz. Después de eso, voy a usar la opción llamada variable de texto. Entonces escribe variable de texto, variable de texto igual a aquí voy a asignar con esta variable llamada nombre o variable de nombre. Después una coma, en la siguiente línea, voy a definir fuente Fuente aquí dentro del bajo redondo, voy a asignar fuente aérea y también voy a definir el tamaño de fuente, así que voy a pasar 40. Entonces después de la coma, tenemos que asignar con. Voy a asignar con su pase 25. Entonces voy a asignar para color redondo AG. Para ronda aquí voy a usar el color azul. Después de eso, voy a asignar color de fondo, BG. Para BG, voy a asignar amarillo claro amarillo claro. Después de eso, voy a asignar justificar porque necesito alinearla y voy a hacerla centrada. Entonces una coma, ella, necesitamos definir el estilo de la frontera Entonces escriba relieve. Alivio igual al pelo, voy a usar grove Value. Dentro del doble curso voy a pasar crecer. Y a continuación, necesitamos definir el grosor del borde, algún tipo B, D, grosor de borde igual a dos. Y voy a poner este archivo. A continuación, después de niño el asistente de entrada, necesitamos empacar el asistente de entrada. Entonces escriba método de paquete de puntos de entrada, empaque. Dentro de las rotondas aquí, voy a usar pad Y wit pad pad Y, y voy a pasar 20 Básicamente empaca el asistente de entrada y le agrega relleno vertical a su alrededor, y agrego 20 bits de relleno. Ahora después de configurar este archivo, si ejecuto este código en mi terminal, se puede ver el asistente de entrada en esta ventana. Este es el asistente de entrada. Ahora aquí, puedes pasar cualquier texto como nombre, contraseña, lo que sea. Ahora crea el asistente de entrada, necesitamos crear una función que pueda leer la entrada de entrada. Además, es necesario crear un botón. Y cada vez que presionas el botón, eso va a la entrada. Así que vamos a crear la función que va a leer la entrada. Así que empaca, tipo Sol, Dave, y nuestro nombre de función es display. Mostrar entrada de guion bajo. Esta es la entrada y dentro de los vestidos redondos, no voy a pasar ningún argumento, y aquí voy a imprimir, imprimir Es el mottter de Doble curso ingresó texto Después de eso, necesitamos obtener el valor de la variable name, algún tipo name donde dot Gate Maththub Primero ingresamos cualquier texto en este campo de entrada y va a almacenar en esta variable name ware y de este namea variable, vamos a extraer los datos usando esta función y aquí usamos el método gate para extraer los datos Ahora, vamos a crear un botón que vaya a mostrar la entrada. Para eso, aquí para escribir botón dentro de las rondas, primero voy a proporcionar el master, que es root. Después de eso, atributo de texto, y voy a escribir, voy a voy a configurarlo, mostrar entrada. Entonces voy a pasar la orden. Comando, va a cada vez que presione el botón, va a comandar esta función, display input, display input, y además necesitamos empacarlo en type dot pack voy a asignar poco pading en YX direction pad, Y t. voy a configurar este archivo Entonces cada vez que haga clic en este botón, va a llamar a la función de entrada de pantalla y esta función mostrará todo el texto en la consola. Así que establece este archivo. Si ejecuto este código en mi terminal, tenemos el campo de entrada, y aquí, voy a escribir mi nombre, y voy a hacer clic en este botón, Mostrar entrada. Si presiono este botón, ahora puedes ver en mi Consola imprimir mi nombre. Si quieres usar este campo de entrada para contraseña, en ese caso, necesitas ocultar estos caracteres. Para eso, es necesario usar otro parámetro, lo contrario, otra opción llamada show. Déjame mostrarte. Aquí, después de eso, voy a usar otro parámetro llamado Show. Así que igual a dentro del doble curso, voy a usar personaje estrella, estrella, y aquí voy a pasar coma voy a poner este archivo Después de establecer este archivo, si ejecuto este código en mi terminal. Ahora bien, si tecleo algo en este campo de entrada como mi nombre, ahora solo se puede ver el personaje estrella. Ocurrió por este parámetro, y si presiono Enter, puedes ver la prueba en mi conjunto de consumo, pero no puedes leer los datos en este campo de entrada. Entonces así es como usamos este campo de entrada para contraseña. Por ahora, voy a encomiar esta línea y volver a poner este archivo. Además si quieres mostrar la actualización en vivo en tu GUI, sí, puedes. Para eso, necesitas usar el asistente de etiquetas. Déjame mostrarte. Primero, voy a escribir un solo comentario aquí, etiqueta que también muestra lo que es tipo. Se trata de actualización ligera. Voy a crear una etiqueta. Etiqueta etiqueta igual a, voy a usar asistente de etiquetas, etiqueta. Luego dentro de las rotondas primero, tenemos que pasar el muster, que es la ventana raíz raíz, luego tenemos que pasar la variable de texto Texto, variable, pelo, soy pase o extremidad variable, que es nombre o nombre o. Atocoma definirías la fuente. Fuente, quiero usar fuente aérea. Con eso, mi tamaño de fuente es 40. Atracoma también define el color de primer plano, AG primer plano y nuestro color AG primer plano y nuestro Y voy a sub este expediente. Después de eso, también, es necesario etiquetar esta etiqueta. Para eso, voy a escribir label dot pack. Dentro del proceso redondo, y también voy a asg poco relleno desde la dirección YxS, relleno diez píxeles. Voy a establecer este archivo. Después de establecer este archivo, ejecutemos el terminal de inodo de código. Después de ejecutar el código inode terminal, si tecleo algo en nuestro campo de entrada, déjame mostrarte como mi nombre, de lo contrario hola mundo Se puede ver cada vez que escriba algún texto, lo contrario cualquier carácter, se imprime el texto en nuestra ventana con la ayuda de etiqueta. Estos son todos básicos sobre el asistente de entrada. Espero que ahora te quede claro. Gracias por ver este video estad atentos para el próximo estudio. 11. Widget de texto: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro asistente relacionado con el tutorial. Y hoy en este tutorial, vamos a cubrir asistente de texto. Se utiliza para entrada multilínea. De lo contrario, este propósito. El asistente de texto en Kiner permite al usuario ingresar o esta la multilínea de Es como un campo de estilo de bloc de notas y admite formato avanzado, etiquetas y desplazamiento Si hablo de su sintaxis, primero, necesitamos definir una variable en nuestro caso, asistente de texto y luego necesitamos usar esta clase de texto de clase. Entonces dentro de la redondez, necesitamos pasar el muster, quiero ver la ventana principal, luego necesitamos pasar las opciones como parámetro Si hablo de sus opciones, estas son todas las opciones que vamos a ir en el estudio, como por ejemplo con altura, fondo, primer plano, fuente, wrap, padaxPadi, relieve, borde Ya estamos familiarizados con la mayoría de las opciones. Empecemos lo práctico y veamos cómo podemos usar el texto Wist Como pueden ver, estamos en mi editor de código de estudio de usuarios, y ya creo una ventana básica usando la clase TK, y dijimos geometría 400 por 300. Si quieres aumentarlo, sí, puedes. Y si quieres cambiar la dimensión, sí, puedes, depende de ti. Ahora, al principio, vamos a crear el asistente de texto. Como ir a tomar una variable y nuestra variable es texto, texto igual a lo que voy a llamar a clase de texto, esta. Después dentro de la rotonda al principio va a pasar el muster y que es root quiero colocarlo en una ventana de raíz Entonces voy a pasar las opciones. Primero, voy a pasar altura, altura , altura igual a t, coma En la siguiente línea, voy a definir mié. Con ancho igual al dobladillo asignar 40. Entonces voy a usar font, font. Aquí, quiero usar la fuente Aerial. Entonces dentro de la ronda versus dentro del código doble, voy a escribir AL. Aéreo y voy a pasar tamaño de fuente 12. Entonces voy a definir para color redondo, G, G iguales dos dentro del doble código. Voy a pasar de color azul. Azul. Entonces voy a definir el color de fondo usando BG, BG. Aquí lo voy a decir color de fondo, amarillo claro, amarillo claro. Después de definir el color de fondo, entonces voy a usar otra propiedad, que es el rap. Rap, rap igual a aquí voy a envolver con palabra, algún tipo palabra. Entonces entonces voy a cambiar el estilo de borde. Para eso, voy a tomar alivio. Alivio. Dentro del doble curso, voy a usar grupo. Coma. A continuación, voy a usar border with border with, border with, voy a definir dos. En wrap, tenemos que pegarle tres opciones. Ninguno, carácter y palabra. Entonces tenemos que virarlo. Para eso, necesitamos escribir texto, punto, paquete. Dentro del bris redondo también voy a asignar algún padding, algún tipo pad Y, 20 pixel. De lo contrario, diez píxeles, depende de ti. Entonces voy a establecer este archivo. Yo configuro este archivo, si ejecuto este código en mi terminal, ahora se puede ver que este es nuestro asistente de texto parece. Aquí podemos pasar texto de alineación múltiple. Y si quieres obtener el texto y mostrar el texto en tu terminal, en ese caso, necesitas crear un botón. Además, necesitas definir una función que vaya a extraer el texto. Entonces hagámoslo. Aquí, voy a crear una función, Dave y nuestro nombre de función es mostrar texto underscoe Mostrar texto, por ahora no va a tomar ningún argumento y luego dentro de esta función, necesitamos obtener el texto. Para eso, vamos a usar método Git, algún tipo de contenido, contenido igual al texto dot Gate. Aquí utilizamos el método Gate para obtener el texto. Entonces dentro de los vestidos redondos, ahora, necesitamos definir el índice. Vamos a partir de qué índice vamos a seleccionar el texto. Aquí voy a seleccionarlo desde el principio. Quiero decir inicio del índice. Entonces voy a pasar dentro del doble curso, voy a pasar 1.0. Después después de la coma, dentro del doble curso, quiero agarrar hasta el final del personaje Así que pasa, así que para pasar final. Aquí, uno significa la línea uno y cero significa cero carácter. Es el inicio del índice. Si seleccionas dos tenía, entonces va a saltar a la línea número dos y si cambias el valor cero, supongamos tres, luego de la línea número dos, va a agarrar el tercer carácter. Ahora, necesitamos imprimir los datos en mi terminal. Entonces escribe print y dentro de la rotonda, voy a dar propina Dentro del doble curso, entrada del Usuario usuario entrada aquí, acoma, voy a pasar la variable Algún tipo contenía y ahora necesitamos crear un botón. Siempre que presionemos el botón, va a mostrar el texto en mi terminal. Aquí voy a crear un botón y dentro de las prensas redondas, primero, necesitamos proporcionar el muster que es root Entonces necesitamos proporcionar texto, texto botón, texto igual para mostrar texto. Entonces tenemos que pasar el comando que va a activar la función. Comando equval a nuestro nombre de función es mostrar texto, mostrar bajo texto scode Entonces lo voy a empacar, empacar y dentro de la dirección redonda, estoy tipo pad Y, pad Y, diez píxeles, y voy a configurar este archivo Pero antes de ejecutar este código en mi terminal, necesitamos hacer alguna corrección porque no necesitamos ponerlo en un código doble. Tenemos que quitar el qd de estos códigos dobles, y voy a configurar este archivo Después de establecer este archivo, si ejecuto este código en mi terminal y pongo algún texto ficticio en esta área de texto Y da clic en texto corto. Ahora puedes verlo imprimir los Datos exactos los pegamos aquí. Imprime el párrafo multilink en mi terminal. Ahora el problema es que no tenemos ninguna palabra de desplazamiento en este asistente de texto. Necesito barra de desplazamiento. Para eso, necesitamos crear la barra de desplazamiento. Vamos a crear esta barra de desplazamiento. Antes del asistente de texto, aquí, voy a definir la barra de desplazamiento Algunos teclean un nombre variable scroll, scroll, igual a scroll, igual a scroll bar. Desplazarse y dentro de los vestidos redondos, pasamos el muster, que es donde vamos a poner esta barra de desplazamiento, que Diez, tenemos que empacar esta barra de desplazamiento. Algún tipo, scroll, dot, empaca dentro de los vestidos redondos, aquí, necesitamos definir el lateral. Lado, voy a moverlo del lado derecho. Derecha. Y necesitamos definir el relleno, llenar, y quiero llenarlo en Y xs. Así que para pasar Y. Ahora arriba crear esta barra de desplazamiento, necesitamos establecer esta barra de desplazamiento dentro del texto Wiz Para eso, aquí, arriba definir la raíz. Voy a definir la barra de desplazamiento. Comando de desplazamiento Y. Para ello, utilice esta opción comando Y paseo igual al conjunto de puntos de desplazamiento. Se va a establecer la barra de desplazamiento a este asistente de texto. Establecer este archivo, y voy a configurar este archivo. Entonces voy a configurar esta barra de desplazamiento. Para eso, aquí después de empacar el asistente de texto, voy a probar scroll dot config scroll dot config dentro del comando Rundres igual a vista de texto Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes notar esta barra de desplazamiento Esta es la barra de desplazamiento. Y si paso A data para desplazarse, ahora se puede ver esta barra de desplazamiento Si me desplazo hacia abajo, se puede ver el contenido del área de texto. Barra de desplazamiento es muy importante para el Asistente de texto. Espero que ahora te quede claro cómo puedes usar el texto Wizard en Ker.Thks para ver este video Estén atentos para el 12. Widgets de mensajes: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro tutorial relacionado con el asistente de atender. Y hoy en este tutorial, vamos a cubrir mago de masas. El asistente de masas es similar a la etiqueta, pero diseñado específicamente para bloques largos de texto, a diferencia de label. Envuelvo el texto automáticamente. lo que es ideal para esta cosa texto estático de varias líneas como instrucción o advertencia. Si hablo de eso sintaxis, necesitas usar este método mensaje, luego primero, necesitas definir el maestro, quiero decir la ventana donde vas a poner el asistente de mensajes, luego puedes pasar tu texto y a continuación pasamos tus opciones. Si hablo de eso opciones, estas son todas las opciones que vamos a usar en magos de masas. Con fondo de fuente para abajo realmente PadixPadi Justificar se utiliza para la alineación, y encore se utiliza para la alineación de texto Entonces comencemos la práctica y veamos cómo podemos usar estas opciones con el asistente de masas. Así que finalmente, ini uso un editor de código de estudio. Ahora, déjame mostrarte cómo podemos usar el mago de masas. Al principio, voy a definir un mensaje, masas de texto, algún tipo, masas subrayan texto Masas de texto igual a dentro de los metales redondos, voy a pasar un mensaje multilínea Aquí, dentro de los vestidos redondos, voy a escribir este mensaje multilínea Bienvenidos al inter tutorial. Este asistente de masas ajusta automáticamente texto largo y ajusta la altura para alimentar el contenido. Después de eso, vamos a utilizar al mago de masas. Para ello, necesitamos definir una variable MSG en nuestro caso. Igual al mensaje. Mass wizard, entonces dentro del redondoSSF necesitamos definir la ventana donde vamos a colocar nuestro asistente de masas, que Después, necesitamos definir el texto. Texto igual a donde voy a pasar el texto del mensaje variable. Después, entonces voy a definir a la hierba. Nosotros, voy a definir 300, continuación, voy a definir fuente. La fuente tenía, quiero usar la fuente de área. Dentro de las capas dobles, estoy escriba area y también voy a definir el tamaño de fuente que es trap. Después después de la coma, voy a definir color de fondo, BG, fondo, y voy a usar azul claro Azul Claro. Entonces voy a definir fondo color a G, y aquí dentro del doble curso, voy a escribir negro. Después de eso, después de eso, voy a darle estilo al poder. Soly realmente Reale aquí en el doble curso, voy a pasar levantado, coma y luego voy a agregar poco relleno Huevos de almohadilla, huevos de almohadilla, diez, también almohadilla Y, también diez. Después de eso, necesitamos alinear las masas. Quiero alinearlo desde la izquierda, algún tipo justifique dentro del curso Dufl, voy a escribir let value, y voy a configurar este archivo Después de configurar este archivo, necesitamos empacar las masas reservar algún tipo msg masas dot pack mthodpack dentro de la roundresss, también agregar poco padding, algún tipo pad Y empacar las masas reservar algún tipo msg masas dot pack mthodpack dentro de la roundresss, también agregar poco padding, , yendo algún tipo pad a pixel. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, déjame mostrarte para ejecutar este código en mi terminal. Aquí se muestra el mensaje. Entonces espero que ahora te quede claro, ¿ cuál es el uso de Masses Weizer Gracias por ver este video, Sadi en para el próximo Tutorio 13. Diseño del empaque: Hola, chico. Es bueno verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con Kiner. Y hoy en este tutorial, vamos a aprender manejo de maquetación. Básicamente, Kiner ofreció tres gerente de diseño principal, pack, codicia y gusto Y también puedes anidar diseños usando marcos dentro de marcos. Y hoy en este tutorial, vamos a aprender maquetación de pack. Ahora la pregunta es ¿qué es el diseño de paquetes en Kinder? El gestor de geometría pad es una de las formas más sencillas de posicionar al asistente en un ala. Es automáticamente organizar asistente relativo entre sí en una de las cuatro direcciones, arriba, abajo, izquierda o derecha. Si hablo de una sintaxis básica, necesitamos escribir asistentes Primero, necesitamos escribir la variable del asistente a, luego necesitamos usar punto PAC, este método. Entonces dentro de los versos redondos tienen que pasar las opciones como PadixPady, side, et cetera fill Si hablo de sus opciones, estas son todas las opciones que vienen con el diseño del paquete. Lateral, llenar, expandir, padix y Pad Y. Opción interior, podemos pasar valor total de cuatro Arriba es el valor predeterminado, luego abajo, izquierda o derecha. Entonces tenemos llenado. Se va a expandir asistente para llenar espacio. Puede llenarlo s o YxS o ambos. Entonces tenemos expandirnos. Permite que el asistente se expanda para llenar cualquier espacio extra en el maestro de geometría. Entonces tenemos a Padix y Padi y ya estamos familiarizados con Empecemos la práctica y veamos cómo podemos usar padayout Como puedes ver, estamos en Magazines studio editor de código, y ya creo un archivo Python main dot py y aquí creamos el layout básico con dimensión de 300 por 200. Y ejecuto el bucle principal. Ahora aquí, voy a añadir algunos botones. Estos son el nombre del primer botón BTN uno. BTM uno igual a, voy a usar botón botón asistente Entonces dentro de las rotondas necesitamos pasar el nombre maestro que es root entonces voy a establecer un texto de botón, texto igual a pelo, voy a escribir, voy a escribir su posición, que es botón superior Voy a colocar este botón en la parte superior de esta ventana. También va a proporcionar coma entre el nombre de la ventana y el texto Después de eso, voy a proporcionar un color de fondo, algún tipo BG. Pelo de fondo, voy a usar color azul claro, azul claro. Azul. Entonces duplico este botón, y lo voy a nombrar botón dos, aquí y aquí, voy a llamarlo botón de elevación. Entonces voy a quitar top y en vez de top, voy a escribir, botón de vuelta. Y también voy a cambiar su color de fondo. Voy a hacerlo verde claro. Luz, verde claro. Entonces lo duplico otra vez y voy a nombrar a este botón botón tres, este es botón, botón derecho. Y voy a hacer este rosa claro . Voy a establecer este archivo. Hasta configurar este archivo, ahora voy a usar el método pack, método de diseño de empaque porque necesitamos empacarlo en nuestra ventana. Primero, voy a empacar el primer botón, subtipo BTN botón un punto Pack método de diseño Empaque. Después dentro del redondo dice, primero, voy a usar lado opción lateral y voy a hacer que hable Y voy a poner este archivo. Perturbar este archivo, trastornar este archivo, ejecutemos el código en nuestra terminal. Arriba en el código, como puedes ver, aquí es donde colocamos el botón superior. Ahora voy a llenar este botón en Xxs. Para eso, aquí voy a teclear relleno y voy a llenarlo en dirección Xxs Y voy a poner este archivo. Perturbar este archivo, si vuelvo a ejecutar este código, ahora puedes verlo sentir el botón en la dirección de X. Básicamente, se extiende por la parte superior porque tenemos un espacio arriba. Ahora voy a añadir un poco de relleno. Para eso, aquí, voy a usar la propiedad pad Y. Pad Y. Se va a agregar relleno en dirección Y x. Aquí voy a pasar diez. Voy a establecer este archivo. Después de establecer este archivo, agregas mi código en mi terminal. Ahora puedes notarlo un poco de acolchado en él. En vez de diez, voy a usar 20. Y si hice este código en mi terminal, ahora se puede notar que proporciona gap. Agrego almohadilla de 20 píxeles en YxS. Desde arriba, agrega relleno de 20 píxeles y desde abajo, también agrega relleno de 20 píxeles. Entonces por ahora, voy a quitar el relleno porque ya estás familiarizado con eso. No voy a explicarlo aquí. Ahora, voy a hablar de expandir. Pero antes de hablar de expandir, me gustaría mostrarle otro lado. Voy a duplicar esta línea. Esta vez, voy a empacar botón dos, así lado igual a izquierda, y voy a sentirme en dirección YX Además, duplico esta línea y voy a empacar el botón tres. Esta vez, voy a empacar este botón en el lado derecho. Derecha. Y además, lo voy a llenar en YxS voy a poner este archivo Después de que configuré este archivo, tú en este código en mi terminal, es como presionamos nuestro botón y expandimos nuestros botones. Aquí expandimos nuestro primer botón en Xxs y aquí expandimos nuestro segundo botón y tercer botón en YxS presionamos nuestro segundo botón en el lado izquierdo y presionamos nuestro tercer botón en el lado derecho Ahora, déjame mostrarte otro ejemplo con expandir. Para eso, voy a comprometer todas estas líneas. Voy a poner esa sección en un comando multilínea. Entonces estoy tipo y voy a mover este código dentro de este comando multilínea. Déjame mostrarte. Y voy a crear a otro botón. Para crear el botón, nuevamente, voy a copiar esta variable de botón, y la voy a pegar aquí. Y este es nuestro primer botón, y este es el botón superior. Entonces duplico esta línea o el botón dos, y lo voy a colocar en la parte inferior. Además, voy a cambiar su color. Voy a hacerla crema ligera. Después de eso, voy a empacar tanto el botón. Para eso, voy a teclear botón, BTN. Para eso, voy a hacer ese botón, BTN, botón uno, punto, pack, botón un paquete dentro de los vestidos redondos Aquí, primero voy a definir el lado lateral lateral, arriba. Voy a colocarlo en la parte superior. Entonces voy a usar llenar propiedad, fallar, y esta vez, quiero llenar el botón en ambas direcciones, ambas. Se va a llenar el botón en YX también es xs. Entonces voy a expandirme, expandirme, voy a hacerlo realidad. Entonces nuestra condición de expansión es cierta. Así que por favor establece este archivo si ejecuto mi código en mi terminal. Así es como se ve nuestro botón. Rellene ambos, permita que se estiren horizontal y verticalmente y se expandan a través de skinter de cola para compartir cualquier espacio extra con este asistente De la misma manera, voy a empacar otro botón. Entonces dupo esta línea, y esta vez, voy a cambiar de lado solamente Voy a hacerlo botón. Rellenar ambos y expandirlos. Después de configurar este archivo, si ejecuto este código en mi terminal, y también voy a cambiar el nombre del botón. Es el botón dos. Después de establecer este archivo, si ejecuto este código en mi terminal, es como ahora se ve. Ahora, ¿qué está pasando aquí? Ambos botones uno y dos expanden por igual para llenar el espacio vertical. Rellenar ambos valores les permiten estirarse tanto horizontal como verticalmente. Ahora, déjame mostrarte la, la diferencia entre expandir y expandir forbs Para eso, voy a duplicar esta sección y comentar anterior a la línea. Diez, aquí, voy a usar llenarlo en Xxs. Además, voy a llenar el botón dos en X xs. Esta vez, voy a hacer que una de las caídas de valor. Voy a hacer que el botón uno caiga el valor. Déjame mostrarte expandir caídas. Además, voy a cambiar el lado del segundo botón. Voy a hacer que se hable, y voy a poner este archivo. Después configuré este archivo, si hice este código en mi terminal, ahora puedes notar expandir, si expando el tamaño de la ventana, si explico su altura, puedes notar el botón superior, quiero ver el botón uno, permanecer a la misma altura. Incluso cambias el tamaño de la ventana verticalmente, diriges, te quedas a la misma altura Pero el segundo botón, lo contrario el botón inferior se estresa verticalmente para ocupar el espacio extra cuando la altura de la ventana se incrementa debido a que ella expandimos verdad. Y si hago que tanto el valor caiga, déjame mostrarte. Si hago que tanto el valor caiga y luego configuro el archivo y ejecuto este código en mi terminal, ejecutemos el código en mi terminal. Ahora si trato de ampliar el área de la ventana, ahora puedes ver nuestro segundo botón y botón superior tanto el fijo a su lugar. Permanece a la misma altura. Si lo aumento, aún se queda a la misma altura. Esa es la diferencia entre expandir verdadero y expandir falso. Espero que ahora te quede claro. Esto es para este tutorial en el siguiente tutorial, vamos a aprender otro ejemplo de maquetación. Vamos a aprender sobre el diseño de la cuadrícula. Gracias por ver este video Aturdido. 14. Disposición de cuadrícula en tkinter: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con la gestión de maquetación de Kinter Y en este tutorial vamos a aprender el diseño de KinterGrid Otra pregunta es ¿qué es el diseño de KinterGrid? El administrador de geometría de rejilla organiza Wizard en una estructura similar a una cuadrícula de tabla usando filas y columnas Te da un control fino sobre cada asistente que aparece. Puede obtener un mejor control si usa el diseño de cuadrícula. Si hablo de su sintaxis, esta es la sintaxis básica. Primero, tenemos que pasar el nombre del asistente, luego el método de cuadrícula de puntos. Dentro de los latones redondos primero en pasar fila definir la posición de la fila, también en para definir la posición de la columna Si hablamos de opciones comunes de grid, viene con row column, rowspan, column span, sticky SpadPadoy, iPadX e iPadoy Usando esta opción, podemos colocar cualquier asistente en cualquier posición. Entonces si hablo de la ventaja clave del diseño de cuadrícula, es mejor para desde el diseño de estilo, como iniciar sesión desde la calculadora, etcétera Puede alinear los asistentes con precisión usando filas y columnas y las opciones adhesivas ayudan a alinear el asistente dentro Recuerde una regla más importante sobre el diseño de la cuadrícula. No mezcle el paquete y la rejilla en el mismo contenedor o en un mismo marco o en la misma ventana. Entonces comencemos la práctica y veamos cómo podemos usar el diseño de cuadrícula. Como puedes ver, estamos en mi editor de código vis studio y ya creé un archivo Python main dot Pi. Dentro de este archivo Python, creo el diseño básico, el diseño básico del ala Kiner y mi dimensión de diseño es de 300 por 150 Ahora usando Gridaut vamos a crear un login desde. Entonces primero, voy a definir dos etiquetas. El primero es para el nombre de usuario y segundo se llama contraseña. Escriba etiquetas dentro de los vestidos redondos, voy a pasar el nombre maestro que es root Quiero colocarlo en una ventana raíz. Después para definir el texto, texto dentro de los códigos dobles, aquí voy a escribir nombre de usuario. la misma manera, voy a duplicar esta etiqueta y después de duplicar esta etiqueta, voy a reemplazar nombre de usuario por contraseña. Y ahora voy a posicionar los diseños usando grit. Para eso, aquí, voy a escribir punto de arenilla. Dentro de la prensa redonda primero, queremos definir la fila. Fila, aquí, voy a asignar cero. Quiero colocarlo en posición de fila cero. Quiero establecer la posición inicial de ARU en. Después para definir la columna. Columna también cero. X significa que va a comenzar esta etiqueta desde la esquina superior izquierda. Después de eso, necesitamos definir padex y pervy type pad, X, diez, coma, pad Y, cinco Aquí le asignamos emparejamiento a esta etiqueta. Desde Xxs asignamos diez píxeles y desde los YxS asignamos cinco Ahora de la misma manera, voy a colocar el nivel dos, y quiero colocarlo así que uso grid out y quiero colocarlo en la regla número uno, pero en la columna número cero. El número de columna sigue siendo cero. Y voy a poner este archivo. Ahora para establecer este archivo, veamos dónde va a colocar estas etiquetas. Arriba en esta terminal de articular, ahora se puede ver que juega este sello en esa posición. Primero, reproduce el nombre de usuario en el número de fila cero y el número de columna cero, luego reproduce la contraseña en la fila número uno, pero la columna número cero. Ahora, trata de entender la fila y las columnas. Así que volvamos a la pantalla. Ahora, tratemos de entender cómo funcionan las filas y columnas en el diseño de la cuadrícula. Supongamos que esta es toda nuestra raíz Winto como te dije, fila y número de columna comenzando desde cero Si utilizo la fila cero y la columna cero, entonces va a colocar al mago en esa posición, en ese alféizar. la misma manera, si no cambiamos el número de fila, si lo hago cero, pero si cambiamos el número de columna como uno, entonces va a colocar este elemento en esa posición. Pero si cambiamos el número de fila, supongamos la fila número dos, pero la columna número uno, entonces va a colocar a este asistente en esa posición. El mago puede ser cualquier cosa. Podría ser una etiqueta, también un botón de campo de entrada, lo que sea. Supongamos que si quieres colocar un botón en esa posición, en ese caso, necesitas pasar la fila número tres y la columna número tres. Puede asumir el trabajo de fila en la dirección de x y el trabajo de columna en la dirección XX. De acuerdo con nuestro código, pasamos nuestra primera etiqueta en esa posición. Aquí colocamos nombre de usuario y colocamos nuestra segunda etiqueta en esa posición. Aquí colocamos contraseña, y luego tenemos que tomar Kotal dos campo de entrada Uno es para nombre de usuario y quiero colocarlo al lado de él. Quiero colocarlo al lado derecho de esta columna. Entonces necesitamos definir la posición. Para el primer campo de entrada, voy a colocar el número de fila cero y la columna número uno, y para el segundo campo de entrada, voy a colocar la fila número uno, también la columna número uno. Volvamos al codecator. Ahora después de que tome el nivel, voy a tomar para escribir dos campo de entrada. Aquí voy a escribir entrada, entrada, y primero voy a definir la ventana aquí vamos a colocar la entrada y voy a pasar root. Entonces duplico esta entrada, y voy a colocar nuestro primer campo de entrada. Como te dije, voy a colocarlo al lado derecho del nombre de usuario. Voy a usar el método grid para colocar el campo de entrada. Primero, voy a definir fila nuestro número de fila es cero, pero nuestro número de columna es la columna uno. Entonces voy a añadir poco relleno. Quiero agregar pad en Y xs, pad, Y, aquí, voy a proporcionar y pixel. Entonces copio esta sección y la coloco aquí. Esta vez, voy a poner el segundo campo de entrada al lado del Nivel dos. Quiero decir contraseña. Quiero colocarlo al lado derecho de la contraseña. Entonces aquí necesitamos definir la posición. Esta vez, voy a usar la fila uno, fila uno y la columna uno, y voy a configurar este archivo. Up configurar este archivo ahora vamos a ejecutar el código en nuestro terminal. Ejecuta este código en nuestro terminal, como puedes ver, aquí es donde reproduce los campos de entrada, lado derecho del nombre de usuario y lado derecho de la contraseña. Ahora déjame mostrarte una cosa. Lo más importante, que es la opción pegajosa, pegajosa. Pero antes, voy a reducir algunos caracteres de contraseña. Voy a simplemente escribir pass y configurar este archivo de nuevo y volver a ejecutar el código. Ahora puedes notar la alineación, la alineación del contenido. Quiero ver el texto del asistente, una alineación media. Ahora necesitamos alinear el texto en el lado derecho. Para eso, necesitamos usar la opción pegajosa. Tratemos de entender qué podemos hacer con las opciones adhesivas. Tratemos de entender qué es el diseño pegajoso ingred. Ahora nuestro diseño se ve así. En nuestra columna cero y cero a quien colocamos nombre de usuario y luego colocamos la cuota de entrada. Ahora el problema es que es su alineación. Este asistente es medio align dentro de esta celda, pero quiero mover este asistente en el lado derecho. Para eso, necesitamos usar propiedad pegajosa. Si usamos la opción pegajosa, entonces podremos mover este asistente dentro de esta celda, algo así. Aquí movemos el asistente de etiquetas a este lado. Quiero decir del lado derecho. Esto es lo que podemos hacer con el palo. Podemos mover al mago dentro de esta celda. Básicamente en el diseño de QuintersGID, cada celda es como una caja, y por defecto, el asistente se encuentra en el centro de Esta opción pegajosa se utiliza para pegar el asistente a un sitio específico. Si quieres mover el asistente en la parte superior, entonces necesitas usar TapTaln N significa Norte. Es bastante similar con mapa. Como saben, la parte superior de este mapa siempre está al norte. Entonces el lado inferior siempre está al sur. Y el lado derecho siempre está al este y el lado izquierdo siempre está al oeste. Es el trabajo de esta manera. Además, puedes combinar direcciones, como si usas tanto el valor juntos como sticky WE, lo va a desviar horizontalmente la misma manera, si quieres usar este valor, sticky Ns, lo va a strace verticalmente Y si usas Ns Ew, entonces va a llenar toda la celda Entonces volvamos al código. Así que de nuevo, estoy de vuelta a mi código resistue, y esta vez voy a usar esta opción Almohadilla Y más suave, voy a usar opción pegajosa. Sticky sticky y aquí, voy a usar el valor E, E. voy a copiar la misma propiedad y valor y voy a probarlo dentro la etiqueta dos, y voy a configurar este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal, ahora puedes notar que alineó el texto, alineó el texto de nivel en lado derecho, y esto es lo que queremos. Ahora, vamos a crear el botón de inicio de sesión. Algún tipo botón botón asistente y dentro de las rondas primero para definir el nombre de la ventana que es root, luego necesitamos pasar el texto del botón y aquí tecleo dentro del doble curso estoy tipo login Después usando el diseño de avaricia, vamos a pegar este botón Escribe avaricia dentro del vestido redondo, esta vez, voy a usar la fila número fila número dos Forma, quiero abarcar este tipo de columna span de columna, y quiero abarcar este botón hasta dos columnas para pasar dos aquí. Además, voy a agregar poco emparejamiento en Y xs, pad, Y, pad, Y, voy a pasar delgada. Ahora va a estresar el botón hasta dos columnas Para entender lo que básicamente pasó, voy a agregar un color de fondo a este botón Entonces botón de texto, voy a agregar coma, y aquí voy a usar BG. BG significa fondo, y para fondo, voy a usar color amarillo amarillo. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora está claro para ti. Recuerde, si no definimos la posición de la columna, sino que definimos la posición de fila, entonces va a colocar a este asistente en la columna cero. Entonces después de eso, voy a agregar valor pegajoso, pegajoso y esta vez, quiero estirar. Quiero estirar el botón en horizontal y quiero ocupar dos columnas. Por eso lo estiro hasta dos columnas de spam. Aquí dentro de los códigos dobles para eso, necesitamos pasar nos estiramos horizontalmente. Después de esa coma intraproft y voy a poner Después de configurar este archivo, si ejecuto este código en mi terminal, aquí puedes ver el resultado. Aquí estiramos este botón hasta dos columnas. Espero que ahora el concepto sea claro para usted cómo podemos usar cuadrícula para colocar al asistente en cualquier posición. En el siguiente tutorial, vamos a hablar sobre el diseño del lugar. Gracias por ver este video. Estén atentos para nuestro próximo tutorial. 15. Disposición del lugar: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con la administración de ventanas, y hoy en este tutorial, vamos a aprender el diseño del lugar. Ahora la pregunta es, ¿qué es el diseño del lugar? El administrador de geometría de lugar se utiliza para posicionar los asistentes explícitamente en coordenadas específicas o posición lista dentro de su asistente principal, como raíz o marco A diferencia del lugar y la cuadrícula que administran el diseño automáticamente, el lugar es el posicionamiento manual. Así que manualmente, podemos posicionar a nuestros asistentes en cualquier posición usando Xxs Si hablo de su sintaxis básica, entonces primero escriba el nombre del asistente y necesitamos usar este método, lugar. Entonces dentro del redondeo dice, necesitamos definir la posición X y la posición YxS Además, puede usar el diseño de posicionamiento relativo in situ usando estas opciones. X e Y. Si hablamos de sus opciones, viene con opción sb total. X, Y, LX, Y real con altura y anclaje. X significa posición horizontal absoluta. Y significa posición vertical absoluta. X real significa posición horizontal relativa. Aquí tenemos que pasar valor entre 0.0 a 1.0 del peso padre. Pero en el posicionamiento horizontal absoluto, necesitamos usar unidades de píxeles. la misma manera, tenemos Y, entonces podemos definir dentro de la altura de este asistente usando estas opciones y al fin, tenemos ancla. Usando ancla, podemos controlar dónde está anclado el asistente Entonces estas son las opciones que podemos usar con el diseño del lugar. Si comparamos con otros diseños, si comparas con la cuadrícula de empaque y los colocas juntos, PAC es fácil de usar. La rejilla también es fácil de usar, pero el lugar no es tan fácil de usar. Tenemos que configurarlo minual. Pero si hablamos del control preciso, entonces los lugares tienen la mano superior. Así que el diseño de cuadrícula es uno de los mejores métodos de diseño en Kiner. Si comparas con empacar y colocar. Ahora cuando necesitamos usar el diseño del lugar. Cuando necesite un diseño perfecto de píxeles, puede usar Disposición de lugar. Al diseñar interfaces o juegos personalizados, puede usar el diseño del lugar. Pero debes evitar usarlo para los froms receptivos o el cambio de tamaño dinámico Porque no adopta automáticamente. Si hablamos de toda la conclusión, entonces en el diseño de su lugar, puede posicionar mínimamente a los asistentes Admite tanto el posicionamiento absoluto como relativo y utiliza codificación para controlar cómo la visita se alinea con su punto. Puede darle un control total, pero requiere más eput para un diseño receptivo Comencemos lo práctico y tratemos de entender cómo podemos usar el diseño del lugar. Por último, como puedes ver, estamos en mi editor de código visual studio y aquí creamos el layout básico. Establecemos la geometría 300 por 200. Ahora voy a definir un botón. Entonces voy a escribir una variable BTN, botón uno, botón uno, igual a, voy a usar botón Wizard Entonces lo voy a colocar en un marco raíz, ventana raíz. Después de eso, voy a poner el botón texto, texto. En cambio el doble curso, voy a escribir el botón uno. Ahora voy a colocar este botón. Voy a colocar el botón usando el método de diseño de lugar. Voy a escribir BTN botón punto lugar. Luego dentro de los versos redondos, necesitamos definir los Xxs y un eje Y. Como ya les dije, X significa posición horizontal absoluta. Entonces aquí, voy a escribir X igual a, voy a pasar 20. Desde el xs, quiero moverlo 20 pixel y desde los YxS voy a moverlo 30 pixel, y voy a sub este archivo Después de configurar este archivo, si ejecuto este código en mi terminal, aquí puedes ver el resultado. De los XX toma un espacio total de 20 píxeles, y de los YxS toma un espacio total de 30 píxeles Posicione con precisión cualquier asistente en nuestra ventana. Ahora bien, este ejemplo es para el posicionamiento absoluto. Ahora déjame mostrarte el ejemplo de posicionamiento relativo. Voy a crear otro botón. Digamos que voy a duplicar esta sección. Copia esta sección y voy a pegarla aquí. Entonces le voy a nombrar botón dos. También voy a cambiar el botón de nombre dos. Ahora, en lugar de usar unidades absolutas, voy a usar unidad relativa. Déjame mostrarte. Entonces aquí voy a usar RLX wd. Se refiere a la posición horizontal relativa, y aquí necesitamos valorar entre 0.0 y 1.0 del peso porcentual. Desde los XXs quiero presionar el botón en el medio de este contenedor Entonces voy a pasar así que voy a pasar 0.5. la misma manera desde el YXS quiero asignar el botón al centro de esta página Para eso, quiero escribir RL Y 0.5. Entonces necesitas usar otra propiedad llamada ancla. Ancla, y aquí voy a usar valor central. Centro. En cambio el código único, centro. Después de eso, también, necesitas cambiar el nombre del botón, es el botón dos. Quiero establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi carminal aquí es donde colocamos nuestro botón a mitad de esta página Colocamos el botón horizontal y verticalmente al centro de esta ventana. Ahora, quiero mover este botón del lado derecho. Para eso, voy a incrementar el valor de la verdadera X. Déjame mostrarte. Ahora voy a pasar 0.8 y configurar este archivo y volver a ejecutar este código. Después de ejecutar este código, como pueden ver, ahora mueve el botón del lado derecho de esta ventana. Usando esta opción, podemos colocar el botón en cualquier lugar nuestra Ventana y es trabajo relativamente, no absolutamente. Esto es para este tutorial. Espero que ahora te quede claro cómo podemos usar el diseño del lugar. Gracias por ver este video, estad atentos para el siguiente tutorial. 16. Diseños anidados (cuadro dentro de marco): Hola. Es bueno verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con la gestión de maquetación de Kiner Y en este tutorial, vamos a aprender diseños de Kinternsted Ahora la pregunta es, ¿qué son los diseños anidados? En Kiner puedes anidar marcos uno dentro del otro y asignar diferentes gestores de maquetación como pack, grid o place a cada uno Este enfoque es útil cuando se desea organizar la interfaz de usuario en sección. Aplica diferentes diseños a cada sección y crea interfaces complejas, limpias y manejables Si hablo de los beneficios de los diseños anidados, podemos usarlo para la interfaz de usuario modular Cada sección está limpia y separada. Podemos usarlo para un diseño flexible, y además es muy fácil de mantener. Es más fácil leer y actualizar interfaces complejas. Pero una regla más importante que debes recordar. Paquete de mezcla vecino y rejilla en el mismo contenedor. Quiero decir el mismo marco, pero se puede usar pack en un marco y rejilla en otro marco. Si hablas de la característica y el beneficio, la característica más importante es el marco dentro del marco. Se utiliza para la agrupación lógica de magos. Diferentes gerentes de diseño aplican diferentes diseños a cada grupo, y es ideal para, por ejemplo, desde el diseño, el diseño Darbod y las IU de múltiples secciones Estudiemos prácticas y veamos cómo podemos usar diseños anidados Como puedes ver, estamos en mi editor de código de Wizard studio, y ya creamos un archivo Python main dot pi y creo una simple ventana Kiner Y asigno con 400 pixel y altura 300 pixel. Al principio, voy a crear el frame uno. Quiero decir el marco superior. Como pueden ver aquí, tomo una variable nombre top frame y frame igual dos top frame igual a dos, usamos frame wizard y lo ponemos en una ventana raíz. Luego establecemos un color de fondo, color azul de línea, y establecemos una altura de cien píxeles. Después colocamos este marco usando Pack Math pack, y llené este en Xxs Si configuro este archivo y ejecuto este código en mi terminal, nuestro marco superior se ve así. Ahora volvamos a llegar al código. Y ahora quiero poner un texto al laboratorio superior, y ahora voy a poner un texto en el marco superior. Para eso, aquí, voy a usar etiqueta etiqueta, y quiero poner la etiqueta en el marco superior, luego quiero asignar el texto a este marco, y nuestro texto de etiqueta es marco superior. Después establecemos un color de fondo azul claro y luego etiqueto esta etiqueta y asigno poco relleno en YxS Este es nuestro marco superior. la misma manera, voy a crear el marco inferior, que va a contener un diseño de cuadrícula dentro de él. Aquí voy a crear un marco inferior. Marco inferior igual a marco y lo pongo en una ventana raíz, después puse un color de fondo gris claro. Después de eso, empaco este marco inferior y lleno este en ambas direcciones y hago que esto expanda sea cierto. Ahora bien, si configuro este archivo y ejecuto este código en mi carminal ahora nuestro diseño se ve así Este es el marco superior y este es el marco inferior, y puedes notar y puedes notar el fondo de color gris. Ahora, vamos a trabajar en el marco anidado. Vamos a poner un marco dentro este marco inferior para los campos from. Aquí paso un marco único y comento anidado dentro, marco inferior para desde campos Después de eso, voy a crear otro marco, y nuestro nombre de marco es de frame. De marco igual a su uso asistente de marco, y luego pongo esto de marco dentro del marco inferior, no a la ventana raíz. Pongo este marco en este marco inferior. Después asigno un color de fondo gris claro, igual que el marco dos. Entonces empaco este marco. Entonces dentro de este nasttfFrame, voy a agregar una etiqueta y un campo de entrada usando el diseño de cuadrícula met Aquí creo una etiqueta y pongo esta etiqueta dentro del marco de from. Y el texto de nuestra etiqueta es nombre, y nuestro fondo de etiqueta es gris claro. Dentro de este marco de formulario, aquí utilizamos el método de diseño de cuadrícula y colocamos esta etiqueta. Después creamos una entrada, y de la misma manera, colocamos esta entrada dentro de este marco de formulario y usando el método de diseño de cuadrícula, colocamos, colocamos este feed de entrada. Si configuro este archivo y ejecuto este código en nuestra terminal, aquí es donde ponemos la etiqueta de nombre y el feed de entrada. la misma manera, tenemos que hacer lo mismo por la contraseña. Y ya aprendemos el método de posicionamiento, cómo puedes usar fila y columnas. la misma manera, voy a poner otra etiqueta y el campo de entrada para el correo electrónico, y colocamos ambos usando el diseño de cuadrícula. Y por fin, voy a añadir un botón. Voy a agregar este botón dentro de este marco de formulario. Entonces este es el gran ejemplo de diseño de cuadrícula anidada. Y recuerda, no usamos la codicia y empacamos juntos. Quiero decir dentro de este marco de formulario, no usamos la codicia y empacamos juntos Pero puedes notar que nuestro marco de formulario juega con el método pack. Ato este con el método pack, pero dentro de él, no usamos método pack y el método green juntos. Utilizamos solo grilla. Entonces, al principio, creamos un primer marco, el marco superior. Después dentro de este marco superior, ponemos un nivel usando el método de pack. Después creamos otro marco. Este es un segundo marco, y este es para fondo y este es marco inferior. Y además empaco este marco inferior usando el método pack. Entonces dentro de este marco inferior, creo otro marco. Pero aquí volvemos a usar el método de empaque para colocar el marco desde dentro del marco inferior. Luego dentro de este marco de formulario, creamos esta forma. Pero esta vez usamos el diseño de cuadrícula para colocar la etiqueta y el campo de entrada y los botones. Entonces, para configurar este archivo, si ejecuto este código en mi terminal, es como se ve nuestro layout. Espero que ahora te asuste lo que es el diseño anidado. Gracias por ver este video Sitio para el siguiente capítulo. 17. Widget del botón de verificación de Tkinter: Hola. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial. Y hoy en este tutorial, vamos a hablar de Kiner Check button wizard El botón de verificación en Kinter permite al usuario activar o desactivar una opción Es similar a la casilla de verificación en formas de onda. Y si hablo de su característica clave, se puede verificar o desmarcar Si lo comprobé, entonces su valor se convierte en uno y si lo desmarqué, entonces su valor se convierte en cero Se utiliza para múltiples opciones independientes. Además, se puede vincular a una variable para rastrear su estado. La variable podría ser variable, variable cadena o variable booleana Déjame mostrarte un ejemplo de cómo podemos usarlo. Como pueden ver, estamos en mi editor de código de estudio Visal y aquí ya creo una ventana básica de Kiner Ahora, al principio, necesitamos definir una variable y nuestra variable está acuerdo donde Egrewa igual a int variable, intwa Aquí, voy a poner todos los indsers. Después de eso, voy a crear un botón de verificación. Para eso, voy a definir una variable y nuestra variable está de acuerdo de acuerdo igual a aquí, necesitamos usar el botón de verificación. Luego dentro de las prensas redondas, al principio, necesitamos proporcionar el nombre maestro que es root. En qué ventana voy a pegar el botón de verificación. Entonces necesitamos definir el texto, Stokma soy tipo, texto, texto dentro de las comillas dobles, voy a pasar, estoy de acuerdo con este término A continuación, necesitamos usar el parámetro importante llamado variable. Entonces para atar variable, variable va a almacenar el estado de la casilla de verificación. Podría ser variable de cadena o indies son variables. En nuestro caso, héroe uso en variable, y voy a pasar el nombre de la variable a creció. En nuestro caso, si marcamos este botón de verificación, va a almacenar un valor y si lo desmarcamos, va a almacenar valor cero Entonces necesitamos empacar esta variable. En la siguiente línea, empaco esta variable y uso algo de relleno en YxS voy a establecer este mosaico Si configuro este archivo y ejecuto este código en mi terminal, es como se ve. Es solo un botón de verificación. Y como puede ver, no definimos ninguna dentro de la altura a esta ventana. Por eso se ve así. Nosotros no establecemos la geometría, y no la necesito. A continuación, voy a definir una función que va a mostrar el valor. Para ello, hemotypetap y nuestro nombre de función es Entonces dentro de esta declaración impresa, si hubiera usado una condición. Si acuerda palabra u obtiene algún valor, entonces va a imprimir trampa, lo contrario, va a imprimir sin marcar Entonces cada vez que marque esta casilla de verificación, entonces va a enviar uno en esta variable. Entonces obtiene un valor. Entonces va a imprimir tramposo. Y si lo desmarqué, entonces va a llenar el estado e imprimir sin marcar entonces va a llenar el estado e imprimir sin Y para ejecutar la función, aquí necesitamos usar un botón. Entonces aquí, voy a definir el botón. Primero, definimos el botón, luego colocamos el botón en una ventana raíz, y este es nuestro botón gusto, check state. Y dentro del parámetro común, llamo a esta función así estado, y la empaque y la empaque en esta ventana. Entonces voy a configurar este archivo y ejecutar este código en mi terminal. Hasta ejecutar este código, aquí puedes ver la ventana. Entonces si hago clic en este botón, marque Estado, como puede ver, se imprime deschaked porque desmarco esta casilla de verificación Pero esta vez si marco esta casilla y luego presiono el botón, marque Estado, esta vez imprima marcada. Ahora hablemos de los parámetros importantes que vienen con este asistente. Si hablo de su parámetro, viene con texto y ya lo sabemos. Tengo que mostrar la etiqueta junto a la casilla de verificación. Esto viene variable, y conocemos el uso de la variable. Se va a definir el estado de casilla de verificación. Este valor de encendido y valor desactivado en valor valor cuando se marca, y el valor predeterminado es uno de valor cuando el valor no tiene forma y su valor predeterminado es cero Por defecto, va a mostrar uno y cero, pero puedes cambiar las opciones. Déjame mostrarte. Así que de nuevo, estoy de vuelta a mi código de Visual Studio, y creo otro archivo Python significa hacer Pi. Ahora voy a definir una variable que va a tener un estado predeterminado. Y nuestra variable es agiver y es una variable de cadena. Y por defecto, dije Valor, no, y es un valor por defecto. Y ahora voy a crear un botón de verificación sobre Valu y de parámetro de valor. Y voy a pasar valor sí y de valor, no. Entonces aquí creo el botón check y configuro este botón check en esta variable llamada agree. Y presiono este botón de verificación en una ventana raíz y digo este texto, estoy de acuerdo con este término, y luego configuro la variable agriY como pueden ver, es variable de cadena Ahora el valor se convierte en sí. Aquí dije el valor sí y de valor, no. Si seleccionamos la casilla de verificación, va a pasar sí a esta variable en todas partes, y si la desseleccionamos, entonces va a pasar no, y es el valor predeterminado Entonces necesitamos crear una función que vaya a imprimir el valor en nuestro terminal. Después de eso, voy a definir una función. Y nuestro nombre de función es show state. Se va a imprimir el valor actual y aquí se obtiene el valor usando la puerta Mthod Puerta de punto Egywere. A partir de esta variable, obtenemos el resultado. Después de eso, necesitamos definir un botón, ese botón va a activar la función. Entonces aquí defino el botón. Ese botón va a activar esta función show state, y nuestro texto del botón es check state. Dentro de este botón, llamaremos a la función que va a imprimir el valor actual, show state. Te levantas para configurar este archivo, si ejecuto este código en mi aminal ahora si desmarco esta casilla de verificación y hago clic en verificar estado, se imprime, el valor actual es no porque es el valor predeterminado Pero si marco esta casilla de verificación y luego hago clic en este botón, entonces ahora puedes verlo imprimir valor actual, sí Si lo vuelvo a hacer clic, otra vez, se imprime sí. Ese es el uso del valor y del parámetro de valor en el botón de verificación. Ahora déjame mostrarte otro ejemplo con botón de verificación múltiple. Entonces esta es nuestra ventana básica simple, y esta vez, voy a darte el ejemplo del botón de verificación múltiple. Al principio, necesitamos definir las variables que van a sostener el estado. Entonces aquí, voy a definir total de tres variables. Y además, voy a establecer el valor por defecto, no. Estas son las tres variables, Python ware, Java ware y C más Y. Y estas son todas variables de cadena. Y por defecto en su valor es no. Y para cada una de las variables, voy a crear el botón check. Al principio, voy a crear el botón check para Python v. Botón Check, y lo pruebo en una ventana raíz, y nuestro texto es Python. Entonces muy bien igual a Python ware y el valor es sí, y Ovalue es no Y aquí usamos el método de empaque para empacar este botón de verificación. Y elijo lado oeste lado. Quiero decir, el lado izquierdo, el lado izquierdo de esta ventana. la misma manera, necesitamos crear otros dos botones de verificación. Entonces aquí defino otros dos botones de verificación para las estrellas Java y Sitlus Después de eso, necesitamos crear una función que vaya a mostrar todos los identificadores del botón de verificación. Entonces aquí voy a definir una función llamada show selected. Y primero, va a imprimir este mensaje. ¿Te gustan estos idiomas? Entonces les va a imprimir sus mares. Si te gusta, va a imprimir, y si no te gusta, va a imprimir, no. Entonces necesitamos crear un botón. Van a activar esta función. Éste. Yo iría a activar esta función mostrar seleccionarlo, y voy a configurar este archivo. Después de configurar este archivo, si yo un thecde en mi terminal, aquí puedes ver las opciones, Python Java y C plus plus A partir de estas tres opciones, voy a comprobar Java. No me gusta Python y C plus plus. Entonces si hago clic en este botón, verifico selección, como puedes ver en mi terminal, primero lo imprimo, ¿te gustan estos idiomas? Para Python, es un no. Para Java, es sí, y para C plus plus, nuevamente, imprime, no. Y si reviso todos los valores, entonces presiono el botón. Ahora todo el estatus se convierte en sí. Así es como podemos usar múltiples botones de verificación. Espero que ahora el concepto sea claro para ti. Y si hablo de sus casos de uso, se usa para términos y condiciones acordados seleccionando característica o preferencias, configurando alternas notificación de deslizamiento, modo dardo, cociente de opción múltiple con respuesta múltiple correcta, etcétera Estos son el uso principal del asistente de botón de verificación. Espero que ahora te quede claro. Así que gracias por ver este video, Syuned para nuestro próximo estudio 18. Widget de botón de radio Tkinter: Hola, es bueno verte de vuelta. Una vez más, estoy de vuelta con un nuevo asistente de Kinter relacionado con Tutorial Hoy en este tutorial, vamos a hablar sobre el asistente de botones KinterRadio El botón de radio en Kinter permite al usuario seleccionar una opción de un grupo Es como botones de radio en formas de tabla. Si hablo de su característica clave, se utiliza cuando uno el usuario para elegir sólo una opción de opción múltiple. Recuerda, todos los botones de radio relacionados comparten la misma variable. Por lo general, usamos cadena de otra manera invariable y cada botón tiene un valor único que se almacena en esa variable cuando se selecciona Para entenderlo con claridad, estudiemos práctico. Como puedes ver en mi editor de código de Visual Studio, creo un archivo Python main dot pi y creo el layout básico de Kindle. Ahora voy a definir una variable de cadena y nuestra variable es Zenker Zender igual a una variable de cadena Después de eso, voy a establecer un valor predeterminado para esta variable de cadena. Para establecer el valor por defecto en esta variable, utilizamos el método set. Entonces Ty Zenda puso dentro de la ronda Bess, yo uso este pasado valor predeterminado masculino, y luego voy a crear los botones de radio Quiero darle al usuario la opción múltiple para seleccionar cualquiera de ellos. Nuestro primer botón de radio es para valor masculino. Para crear el botón de radio, primero en el tipo botón de radio, luego dentro de las rondas para pasar la ventana en nuestro caso root, luego se puede establecer el texto para este botón de radio. Es un texto nivelado de este botón de radio. Entonces hay que definir la variable. En nuestro caso, variable igual a Zender también decimos el valor de este botón de radio, que es masculino Con eso, empaco este botón de radio en nuestra ventana. Si seleccionamos este botón de radio, va a establecer el valor a esta variable. Por deiful se puede ver, utilizamos el valor masculino, el mismo Ahora voy a crear otro botón de radio para femenino. Como te dije antes, todos los botones de radio comparten la misma variable. En nuestro caso, Zender y cada botón tiene un valor único. En nuestro caso, masculino y femenino, y que se almacena en una variable cuando se seleccionan. Ahora quiero pintar el valor seleccionado en nuestra terminal. Para eso, voy a definir una función y nuestra función N es mostrar selección. Dentro de los vestidos redondos aquí, imprimo seleccionado Zender atacma Entonces obtengo el valor de esta variable usando el método Gate. Además, para activar la función, necesitamos crear un botón. Entonces aquí, voy a crear un botón, y voy a colocar el botón en una ventana raíz y nuestro botón toma un submit. Y aquí, usando parámetro común, llamamos a esta función, mostrar selección, y empaco este botón en nuestra ventana. Entonces si configuro este archivo y ejecuto este código en nuestro terminal, ejecuto este código en nuestro terminal, se puede ver que proporciona dos botones de radio. Por defecto selecciona el botón de radio macho. Si selecciono botón de radio hembra y luego presiono enviar, se puede ver el resultado seleccionado Zinder hembra la misma manera, si selecciono el botón de radio macho y presiono el botón de envío, ahora se imprime seleccionó Zinder macho Ahora hablemos de los parámetros importantes. Si hablo de su parámetro, viene con un total de seis parámetros, como variable de texto, valor, comando, estado e indicador encendido. Usando comando, podemos llamar a una función cuando se cambia la selección. Usando el estado, podemos desactivar el botón de otro modo botón normal. Usando indicador activado, se usa básicamente para EI avanzado. Ahora, déjame mostrarte otro ejemplo donde te voy a mostrar cómo podemos usar múltiples opciones con una variable compartida. Usando una sola variable, quiero proporcionar total de tres opciones, déjame mostrarte cómo. Así que de nuevo, estoy de vuelta a mis visitas a tu editor de código, y aquí creo otro archivo Python manto punto Pi Ahora te voy a mostrar opción múltiple con la variable compartida. Entonces primero, voy a definir una variable y voy a establecer un valor por defecto y voy a establecer un valor por defecto para esta variable. Entonces nuestro nombre de variable es choice, y es un string ware, y establecí un valor predeterminado, que es la opción uno. Después de eso, voy a crear un total de tres botones de radio. Aquí creo total tres botón de radio con la misma opción de variable, y proporcionamos diferente valor opción uno, opción dos, y opción tres. Si quieres imprimir el valor, necesitas crear una función para imprimir el valor en tu terminal. Creo esta función y obtengo el valor de esta opción de variable. Ahora necesitamos crear un botón que vaya a llamar a la función. Aquí creo este botón. Ahora puedes notar que tenemos un total tres botones de radio usando la misma variable, y así podemos proporcionar total de tres opciones para eso. Antes de establecer este archivo, voy a cambiar la declaración de impresión. Voy a hacer que se seleccione final a opción seleccionada. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en una terminal, aquí puedes ver las opciones. Si **** la opción dos y presiono el botón Enviar, puede ver la opción seleccionada la opción dos. Un dímero si selecciono el tercero, luego imprima la opción seleccionada opción tres Para un DIMO funciona para la primera opción. Ahora puede que tenga dudas, ¿cuál es el uso de usted puede crear un selector de tamaño de pizza usándolo Déjame mostrarte la demostración de ello. En este ejemplo, me gustaría darle el caso de uso práctico botón de radio múltiple. Aquí vamos a crear un selector de tamaño de pizza. Primero, voy a definir una variable y nuestro nombre de variable es tamaño de pizza. Igual a que es una variable de cadena. Después de eso, quiero imprimir una etiqueta aquí voy a imprimir una etiqueta y nuestro texto de etiqueta es seleccionar tamaño de pizza y cantar Método de empaque, empaco esta etiqueta en esta ventana. Después de eso, voy a crear múltiples botones de radio. Aquí creo los múltiples radiotanes para tamaño pequeño, mediano y tamaño grande, y utilizo el mismo tamaño de pizza variable para almacenar el valor seleccionado Después de eso, como saben, necesitamos crear un necesitamos crear una función que vaya a imprimir el resultado en nuestro terminal. Aquí voy a escribir dap show size, print selected size pizza size dot Gate y va a obtener el valor actual de esta variable. Además, es necesario crear un botón que va a activar esta función. Así que aquí creo el botón que va a comandar esta función muestra el tamaño. Y aquí paso el texto y para el texto del botón, usa Wade ahora Hasta ejecutar este código en nuestra terminal, aquí puedes ver la ventana. Por defecto, selecciona todos los atos porque no establecemos el valor predeterminado para eso. Por eso selecciona pequeño, mediano grande, todo ello. Ahora quiero seleccionar solo la opción grande y selecciono una grande. Arriba seleccionar opción grande, si presiono en Agua ahora, ahora, como puedes ver en nuestra impresión terminal, seleccionarlo talla grande. Entonces ese es uno de los usos de radiobton kinder. Para crear el radiobden solo en botón de radio tipo y dentro de él, es necesario pasar el parámetro Después de eso, necesitas empacar la radiobden. Si hablo de ello casos de uso común, se utiliza para detectar género, grupo de edad o selección de reglas de usuario. También se utiliza para cuestionario o respuesta única correcta. También se utiliza para selectores de temas como la luz oscura y el sistema También, podemos usarlo para la selección de idiomas. Espero que ahora te quede claro, cuál es el uso del asistente de botón de radio. Gracias por ver este video Sdune para el siguiente tutorial 19. Widget de caja de listas Tkinter: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado Kiner Advanced Wizard Hoy en este tutorial, vamos a aprender Kiner Liz Box Wizard El asistente de cuadro de lista en Kinder se utiliza para mostrar una lista de elementos Básicamente, permite al usuario seleccionar una o más opciones. Si hablo de su característica clave, puedes permitir una selección única o múltiple. ítem se puede agregar o quitar o modificar y es útil para mostrar opciones, menú, archivos, etcétera Sin hablar demasiado, déjame mostrarte un ejemplo. Entonces como puedes ver, estamos en mi editor de código de salt studio y ya creo una ventana básica usando inter, al principio, voy a crear un ist box. Para crear un list box, voy a tomar una variable, que es LB, menos box. List box igual a, necesitamos escribir List box, luego dentro del cess redondo, necesitamos pasar el nombre de la ventana en que ventana vamos a poner el List box en nuestro caso root. Después de eso, uno por uno, voy a insertar los datos. Primero, voy a insertar su número de índice, después voy a insertar los datos reales. Aquí, voy a insertar un dato. escriba nuestra variable B list box dot insert dentro de la ronda ***** primero, necesitamos proporcionar el número de índice de este list box Entonces tenemos que aportar el valor. En nuestro caso, Python. De la misma manera, voy a agregar tres más como datos. Así que aquí para pasar Java en el número dos, C plus plus en el número tres, y JavaScript en el número cuatro. Después de eso, cree el list box, también en empacar el list box. Así tipo b Las caja punto PAC. Ahora, después de configurar este archivo, si ejecuto este código en mi terminal, déjame mostrarte así es como se ve nuestro list box. Ahora vamos a crear una función que va a imprimir el elemento seleccionado de la lista de acti en nuestra terminal Aquí, voy a definir una función y nuestro nombre de función es mostrar selección. Luego dentro de esta función, necesitamos identificar el ítem seleccionado. Quiero decir qué ítem está activo. Para eso, voy a definir una variable llamada seleccionada luego desde el list box, obtenemos el ítem activado Supongamos que si hago clic en C plus plus, entonces se ha vuelto activo. Se va a seleccionar el elemento activo. Después de eso, voy a imprimir el valor del ítem activo. Aquí voy a escribir, imprimir, seleccionarlo, y voy a pasar la variable, seleccionarla. Entonces sólo para crear un botón que vaya a activar la función. Aquí voy a crear un botón y lo voy a poner en una ventana raíz y nuestro botón se lleva el show. Después de eso, si subo este archivo y ejecuto este código en mi arminal y selecciono uno de los elementos de la lista como Java y hago clic en Mostrar Ahora se puede ver terminalmente impreso. Seleccionado es Java. Al mismo si selecciono Java Script y luego presiono show, ahora puedes verlo imprimir, seleccionado es JavaScript. Ahora, hablemos del parámetro que podemos usar con este asistente. Estos son los parámetros que podemos usar con este asistente, como la altura. Van a mostrar el número de filas visibles, luego seleccionar el modo. Es el importante. Y viene con varios modos de selección como navegación simple, múltiple o extender. Entonces tenemos fondo y color de foro. A continuación tenemos selección de exportación. Si hablo de opciones de modo de selección de list box, el modo de selección determina cuántos elementos puede seleccionar el usuario y cómo puede seleccionarlos. Si hablo de los modos, viene con cuatro modos diferentes, single browse, multiple y extend. Si hablo de su comportamiento, soltero, usuario puede seleccionar solo un elemento por kiki Navegar. Al igual que solo, permite hacer clic en arrastrar o navegar por la selección. Múltiple. El usuario puede seleccionar varios elementos, haciendo clic en cada uno por separado. Extender. El usuario puede seleccionar rangos usando turno y control. Ya estamos familiarizados con single. Es diferido uno, pero ahora te voy a mostrar opción de modo de selección múltiple Volvamos al editor de código. Nuevamente, vuelvo a mi comedor de código de Visual Studio y creo una ventana básica simple Al principio, voy a crear un list box, LB LB igual a list box y voy a poner el menos box en una ventana raíz y aquí uso el modo de selección múltiple. Ahora podemos seleccionar varios elementos de la lista. Ahora voy a definir una matriz, lo contrario una lista, que va a contener múltiples idiomas. Voy a definir una variable lenguajes e insertar esta lista, aquí paso múltiples lenguajes de programación nombre como Python, Java, C plus plus, Java Sweep, Go. Ahora, tenemos que poner nombre de todos los lenguajes de programación en esta casilla mínima. Para eso, vamos a usar un bucle de cuatro. Para para Lang en idiomas, luego inserte el bucle Fur aquí, usamos el método insert Menos punto de caja Insertar, primero, necesitamos definir el índice, y luego necesitamos definir el idioma. Aquí, N representa un índice especial. Eso significa agregar al final de la lista y representar el idioma actual. Y este método va a agregar los elementos de la lista uno por uno en este list box con su número de índice. Después de eso, voy a etiquetar este list box, b dot pack siguiente, necesitamos crear una función que vaya a imprimir los elementos seleccionados. Para eso, voy a definir una función, y nuestro nombre de función es show selected. Entonces dentro de esta función, necesitamos extraer los índices. Para eso, voy a definir una variable llamada indices, Indices igual a listbox dot car selection El método de selección de autos escribió una tupla de índices de los ítems seleccionados actualmente A continuación, usando un bucle de cuatro, necesitamos extraer los elementos seleccionados. Voy a definir una variable seleccionada elementos iguales a dentro de la resis cuadrada. Luego dentro de la resis cuadrada para I en índices, box dot gate I. Básicamente, es una comprensión de lista utilizada para obtener el valor real de los elementos seleccionados del cuadro de lista Kinker Supongamos que los usuarios seleccionan Python C plus go. En ese caso, esto va a almacenar el valor de tres, Python C plus plus, ir y devolver el resultado. Después de eso, necesitamos imprimir los artículos seleccionados en nuestra terminal. Entonces utilizo esta declaración impresa. Ahora necesitamos un botón que vaya a activar esta función. Yo creo este botón y voy a configurar este archivo. Después de establecer este archivo, si ejecuto este código en mi carvinal, ahora somos capaces de seleccionar varios elementos Supongamos que quiero seleccionar go. Con eso, quiero seleccionar Java y Python. Ahora, si alabo botón de enviar, ahora puedes ver que seleccionaste Python Java y te vas. Entonces así es como funcionó la selección múltiple, y ahora decides que quieres pre seleccionar los ids. Entonces puedes hacerlo usando el método de conjunto de selección. Déjame mostrarte. Supongamos Por defecto, quieres seleccionar Python y C plus plus. Para ello, es necesario utilizar lista Arcos método de conjunto de selección de puntos, y luego va a pasar el número de índice , algo así. Aquí selecciono índice cero significa Python. También selecciono Índice número dos significa C más más. Usando este método, conjunto de selección. Ahora bien, si configuro este archivo y ejecuto este código en mi terminal, ahora puedes notar que ya selecciono Python y C plus plus. Ahora si hago clic en el botón enviar, puedes ver en mi terminal, seleccionas Python y C plus plus. Además, puedes seleccionar otras opciones con eso. Supongamos que quiero SELETG y Java. Entonces voy a hacer clic de nuevo en el botón de enviar. Entonces otra vez, imprime los ítems seleccionados, Python, Java, C plus plus, go. Así es como podemos usar la selección múltiple con List box. Ahora hablemos de cómo podemos agregar elementos a una caja mínima, cómo podemos eliminar elementos y cómo podemos eliminar todos los elementos juntos. Entonces como pueden ver, aquí creo una ventana sencilla y él creo un Cuadro de lista. En este cuadro de lista, tenemos dos ítems, Python y Java. Si ejecuto este código en mi terminal, puedes ver el resultado. En nuestro list box, tenemos dos item, Python y Java. Ahora, voy a crear una función que va a agregar, van a agregar un nuevo elemento de lista a esta lista. Pero antes necesitamos crear campo de entrada, van a tomar la entrada. Aquí creo entrada de campo de entrada, y la colocamos en una ventana raíz y empacamos este campo de entrada. A continuación, voy a definir una función y nuestro nombre de función es Dave en IT. Entonces dentro de esta función, quiero extraer el valor de esta entrada. Dentro de esta función, voy a definir una variable llamada IM. Y artículo igual a puerta de punto de entrada. Entonces, sea cual sea el valor que pases en este campo de entrada, podemos almacenar este elemento variable dentro de esta función. A continuación, necesitamos establecer una condición IP. Si nuestro campo de entrada no está vacío, suma tipo I item, si no hay valor en este ítem, entonces dentro de esta condición IP, entonces quiero insertar el ítem en el list box. Para eso en el método de inserción de punto de cuadro de lista de tipo. Primero en definir el final y luego definir el ítem. E significa número de índice. Hasta insertar el elemento en este cuadro de lista, también único para eliminar el campo de entrada. Tenemos que despejar el campo de entrada. Para eso, voy a escribir punto de entrada D dentro de la ronda versus, quiero eliminar carácter del índice cero para terminar. Recuerde, en lugar de usar el número de índice, aquí usamos A. Básicamente A representan constante. Eso significa anexar en el último índice. Entonces, sea cual sea el valor que pasemos, va a anexar el valor en el último índice Entonces después de eso, necesitamos crear un botón. Necesitamos crear un botón que vaya a activar la función. Entonces aquí voy a definir el botón, botón y lo pongo en una ventana raíz y nuestro texto de botón está en, y llamo a esta función en ítem, y empaco este botón. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes ver que hay una hazaña de entrada Ahora quiero agregar otro lenguaje de programación, vaya y luego voy a presionar el botón Agregar. Después de presionar el botón Agregar, ahora puedes ver el cuadro Lista, agrega el idioma go al final. Y de la misma manera, puedes agregar cualquier cosa. Supongamos que esta vez quiero agregar C plus plus, C plus plus. Si presiono el botón Agregar, como puedes verlo agrego C plus plus. Así es como podemos agregar elemento de lista a nuestro cuadro de lista. Ahora déjame mostrarte cómo podemos eliminar elementos de la lista de nuestro cuadro de lista. Pero pod voy a duplicar esta línea y en vez de usar Java, voy a agregar C plus plus. Entonces, por defecto, va a agregar tres ítems en nuestro list box. Ahora para eliminar los elementos, necesitamos crear una función, y nuestro nombre de función es eliminar seleccionado. Aquí voy a definir la función eliminar seleccionada. Después dentro de esta función única para seleccionar los elementos. Defino una variable llamada selected y selected igual a listbox dot car selection Como te dije antes, escribió un tapel de indicus seleccionado Si selecciono C plus y Python, entonces va a crear un tapel y almacenarlo en esta variable Después de eso, voy a usar un bucle de cuatro para I en invertido seleccionado, luego dentro de este bucle de cuatro, quiero borrar el elemento de la lista. Listar límites eliminar método dentro de las redondeces que proporciono I. Ahora la pregunta es por qué uso método invertido Básicamente, se utiliza para evitar el desplazamiento del índice. Esto es muy crucial porque eliminar desde el final evita estropear la posición de índice de los elementos restantes A continuación, necesitamos crear un botón. Eso va a desencadenar esta función eliminar seleccionada. Aquí voy a definir el botón. Eliminar seleccionado, y activó esta función, eliminar seleccionado. Y voy a poner este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal y selecciono cualquiera de los elementos como Java y prese eliminar seleccionado, como puede ver, elimina el elemento del cuadro de lista Además, si quieres agregar el ítem, simplemente escribe JAVA y agrega y luego patea el botón. Y nuevamente, agregue el Ib en el último al final del cuadro de lista. Ahora déjame mostrarte cómo podemos eliminar todo el ítem a la vez, cómo podemos borrar la casilla menos. Y es muy fácil. Sólo para definir una función y nuestro nombre de función es ARO. Y luego dentro de esta función, listbox dot Delete primero, necesitas definir el número de índice desde donde quieres eliminar Paso cero porque quiero borrar todo. Empecé desde el índice cero y luego hay que pasar la posición final de esta lista. Después de eso, necesitas crear un botón que va a llamar a esta función clara. Yo creo este botón y eso va a llamar a la función KR. Entonces preestablezca este archivo si ejecuto este código en mi terminal y hago clic en el botón KRL, va a borrar todos los valores del list box Ahora podemos agregar un nuevo elemento de la lista. También puedes eliminar este elemento de la lista. También puedes borrar el elemento de la lista. Ahora el concepto es claro para ti. Y si hablamos de los casos de uso común de List box, se utiliza para seleccionar varios archivos. Elija elementos de una larga lista sin entradas de múltiples opciones, selector de contenido dinamo y menú Entonces espero que ahora esté claro para usted, podemos usar el Asistente de cuadro de lista. Así que gracias por ver este video Syuned para el siguiente tutorial 20. Combobox (a través de ttk) en Tkinter: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro tutorial relacionado con Kiner. Hoy en este tutorial, vamos a aprender otro asistente y nuestro nombre de asistente es Combo Box. La pregunta es ¿qué es Combo Box? El Kitk punto comi box es un asistente de lista desplegable del Yo quiero decirles Cinter. Permite al usuario elegir un solo elemento de una lista predefinida de opciones. Es bastante similar con timus select tag. Básicamente, te da una opción desplegable, y para usar Combi box, necesitas importar el módulo Combox de TTk de Tinter Si hablamos de su característica clave, desplegable con autocompletar Puede ser editable o de solo lectura proviene del módulo TiTiK, por lo que tiene un aspecto moderno Ahora, déjame mostrarte la sintaxis básica de cómo podemos crear una caja Combi. Al principio, necesitamos importar Tiki. Desde Kiner, quiero importar el módulo Tik. A continuación, necesitamos importar caja Combi. Entonces necesitamos importarlo del módulo quinta dot Kitk de quinta dot TK, importar caja Combi Después de Importar nuestros módulos necesarios, voy a crear una ventana raíz. Entonces escriba root igual a TK. Aquí utilizo la clase TK para crear una variable de instancia. A continuación, voy a crear un cuadro combinado. Para eso, voy a definir una variable y nuestro nombre de variable es combo. Comgo igual a aquí, quiero crear un cuadro combinado. Dentro de este cuadro combinado, primero Into type combo box, luego dentro del proceso round, necesitamos proporcionar en qué ventana vamos a poner el combo box. Después de eso, para igualar el cuadro combinado vds. El valor es igual a I lista, y aquí paso Python, Java, Citos y JavaSastre Después de eso, necesitamos empacar necesitamos empacar esta caja combo. Combo dot pack, entonces necesitamos ejecutar el bucle principal Sght root, dot dot Minus I' vamos a crear un cuadro combinado básico Si yo este código en mi terminal, aquí se puede ver el resultado. Proporciona una opción desplegable. Se puede ver el erosign Si hago clic en él, se pueden ver los valores, Python, Java, citrus dus y JavaScript. Se trata de una caja combo básica y sencilla. Desde aquí, puede seleccionar cualquier wd. A continuación, quiero imprimir el valor del cuadro combinado en nuestra ventana con la ayuda de level. Entonces hagámoslo. Entonces voy a asignarle título. Yo creo la variable de instancia, voy a crear un titulo titulo Comma bonks demo. Además, voy a agregar ittle padding cuando empaque esta caja combo Entonces pad Y igual a TM. Y si quieres asignar una selección por defecto, supongamos que en nuestro caso Java, quiero seleccionar por defecto por defecto, quiero seleccionar Java. En ese caso, es necesario escribir combo dot, Cgo dot current Actual dentro del vestido redondo, necesitas pasar necesitas pasar el número de índice. Aquí, voy a pasar una. Se va a seleccionar el primer índice, y como se puede ver en un índice, tenemos Java. Por defecto, va a seleccionar el Java. Voy a sub este cinco. Entonces voy a crear una etiqueta vacía en esa posición. Nivel igual a nivel, quiero colocar este nivel en una ventana raíz, y como pueden ver, Bdfaul el nivel está vacío No proporcionamos ningún texto a esta etiqueta, y luego empaco esta etiqueta. Ahora después de crear la etiqueta, necesitamos poner el valor en esta etiqueta. Para eso, necesitamos crear una función. Aquí voy a definir una función y nuestro nombre de función es y nuestro nombre de función es mostrar seleccionado. Luego dentro de esta función al principio, necesitamos obtener el valor de este cuadro combinado. Para eso, voy a definir una variable llamada seleccionada y seleccionada igual al método Combo dot Gate. Se va a obtener el valor seleccionado de este cuadro combinado. Después de eso, necesitamos configurar esta etiqueta porque necesitamos poner la opción seleccionada a esta etiqueta. Para ello, necesitamos usar el método config, label dot config dentro del receso de ejecución, aquí vamos a seleccionar el parámetro, en qué parámetro vamos a configurar. En nuestro caso, texto, igual a aquí, usamos Estring. Entonces tecleamos, tú lo seleccionas y dentro del receso del carro, pasamos el valor. El valor que obtenemos del cuadro combinado. Voy a sub este archivo. A continuación, necesitamos crear un botón que va a activar esta función de mostrar seleccionada. Aquí defino el botón, botón igual al botón raíz, y pruebo este botón en una ventana raíz y selecciono pruebo este botón en una ventana raíz, luego dije el texto del botón, mostrar seleccionado. Después de eso, utilizo comando. Después de eso, utilizo parámetro común y en este parámetro común llamamos a la función show selected. Después empaco este botón y asigno un poco de relleno en YxS. Ahora antes de que establezcan este archivo, puedes ver algunas advertencias porque necesitamos importar todo desde head. Voy a importar estrella de Kiner input star. También, importo cuadro combinado. Si configuro este archivo, resuelve el problema. Ahora después de configurar este archivo, si ejecuto este código en mi terminal, déjame mostrarte. Después de ejecutar este código en mi terminal, es como se ve nuestro cuadro combinado, y este es nuestro botón, mostrar seleccionar. Entonces por defecto, como te dije, vas a seleccionar Java. Ahora voy a seleccionar C plus plus. Arriba seleccione C plus plus, si hago clic en este botón, ahora lo puedes ver impreso, seleccionaste C plus plus en nuestra ventana con la ayuda de etiqueta. la misma manera, puedes seleccionar cualquier valor, y si hago clic en este botón, se imprime seleccionas Python. Es el ejemplo con actualización de etiqueta en cuadro combinado. Espero que ahora te quede claro. Si hablo de cuadro combinado opción común, es valor, estado, corriente, puerta, y set. Ahora déjenme mostrarles ejemplo con el estado. Usando state, podemos configurarlo en solo lectura para evitar que se escriba. Si configuro este archivo y ejecuto este código, este es el código anterior, y si escribo manualmente algo en el cuadro combinado, sí, puedes. Supongamos que aquí estoy tipo, vaya, vaya idioma. Y como puedes ver en nuestra lista, no tenemos ir idioma. Pero si alabo, show seleccionado, como se puede ver impreso en nuestra etiqueta, seleccionado ir, pero en nuestras opciones, no tenemos ir idioma. Para prevenirlos, puede utilizar la opción Estado. Déjame mostrarte cómo. ¿Dónde creamos el cuadro combinado? Después de pasar los valores, necesitamos usar coma. Entonces, necesitamos usar este parámetro, state, de solo lectura. Si configuro este archivo y ejecuto este código en mi terminal, ahora en nuestra casilla de coma, no podemos escribir nada No se permite escribir nada en nuestro cuadro combinado. Ahora solo permite la selección a partir de los valores predefinidos para evitar la entrada no válida. Espero que ahora el concepto sea claro para ti, ¿qué es el cuadro combinado? ¿Qué es el cuadro combinado? Si hablo de sus casos de uso, es útil seleccionar Ctrl o idioma Cambio de tema o modo y opción de ajuste desplegable. Recuerda, si quieres poner un nuevo valor a esta lista en este cuadro combinado, puedes hacerlo manualmente. Solo necesitas usar el método de conjunto de puntos combo método de conjunto de puntos. Usándolo, sea cual sea el valor que pasemos, lo va a poner en esta lista. Déjame mostrarte la demostración. Después de seleccionar el actual, si configuro un nuevo valor a este cuadro combinado, en nuestro caso, Combo dot set go. Ahora voy a agregar go language a estos valores. Yo configuro este archivo, si ejecuto este código en mi terminal y si abro mi opción desplegable, aquí puedes ver la opción ir Y si tricon show selecciono, ahora lo puedes ver impreso, lo seleccionas ir Espero que ahora el concepto sea claro para ti cómo podemos usar Combo Box y cuál es el uso de Combo box. Gracias por ver este video, Syuned por nuestro próximo tutorial 21. Caja espininacea Tkinter: widget: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial y hoy en este tutorial, vamos a aprender un nuevo mago. Y hoy, vamos a aprender Kiner spin box wizard. Este asistente de caja de giro en Kinter Lake usuario, elija entre un rango de valores usando pequeño botón de flecha arriba y abajo A menudo se usa cuando la entrada es numérica o limitada para especificar la acción. Si hablamos de su característica clave, es permitir la entrada incremental usando flechas, excepto solo valores dentro del rango definido. O un conjunto fijo de elección, también evitar entradas no válidas. Déjame mostrarte demostración lo que es la caja de giro. Estamos en mis viseras editor de código de estudio y cómo crear una ventana básica simple usando Kiner y además asigno un ejemplo de cuadro de giro de título Después de eso, voy a crear una caja de giro. Para eso, voy a definir una variable y nuestra variable es spin. Girar igual a donde voy a crear una caja de giro. Luego dentro de las llaves redondas, primero, necesitamos proporcionar el nombre de la ventana donde vamos a colocar la caja de giro Después de eso, tenemos que pasar de valor a valor. Usando el parámetro de underscoe, podemos definir desde donde nuestro valor va a comenzar y usando dos parámetros, podemos establecer el límite de Entonces necesitamos empacar la variable spin. I tipo spin dot pack. Dentro de las prensas redondas, asigno algunos acolchados en Xxs y YxS Después de eso, si configuro este archivo y undiscde en mi terminal, este es nuestro spin box parece Como puedes ver, por defecto, imprime el valor cero más bajo, y usando esta flecha, puedes incrementar el valor, lo contrario decrementar el Supongamos que quiero incrementar el valor, así presiono flecha hacia arriba y podemos incrementar hasta cambiar porque aquí dijimos el límite Ahora, déjame mostrarte otro ejemplo. Aquí, voy a pasar el valor personalizado. Vamos a seleccionar el día de la semana. Para eso, voy a definir otra variable llamada días y va a contener una tupla Dentro de este tupel vamos a pasar todo el nombre del día. Déjame mostrarte cómo. Él Creé días tuplas y sostengo todo el Danim desde una k Después de eso, necesitamos crear otro giro. necesitamos crear otro giro Entonces voy a escribir giro dos es giro número dos, igual a. Nuevamente, necesitamos definir caja de giro. Entonces mandas los bruss redondos voy a pasarlo en una raíz de ventana raíz, luego coma superior, valores, y aquí voy a ascender valores los días En lugar de valor dinámico aquí utilizamos valores personalizados. Ahora podemos seleccionar valor entre lunes a domingo. Después de eso, voy a empacar la caja de giro. Drive spin spin two dot PAC Math food, pack. Después dentro de las desnudistas, voy a asignarle algún relleno, así que copio este Value paddix y PaUI y lo voy a Voy a sub este archivo. Después de sub este archivo, si ejecuto este código en mi terminal, ahora puedes notar otra caja de giro. Pero aquí podemos seleccionar sólo los días. Los días que pasamos en esta variable. Y si hablamos de sus opciones útiles, déjame mostrarte que vienen con múltiples parámetros desde underscoe hasta comandos de incremento de valores con estado Ahora, déjame mostrarte otro ejemplo con función de devolución Vamos a usar este comando de parámetro. Volvamos al código de visa studio. Entonces primero, voy a crear un nuevo Python Pi main two dot pi. Después voy a importar el intermódulo y voy a crear el Window básico Aquí creo la ventana básica, también necesitamos ejecutar el bucle principal. Punto raíz, bucle medio de punto. Aquí voy a crear otro cuadro de giro, que va a llamar a una función con la ayuda del parámetro de comando. Entonces aquí creo este cuadro de giro y lo colocamos en una ventana raíz y establecemos el valor 1-10 usando parámetro de comando, llamamos a una función sobre el cambio. No definimos la función, por eso muestra la advertencia. Después de eso, empacamos esta velocidad. Entonces voy a crear la función on change. Aquí, voy a escribir Dave sobre el cambio dentro de los versos redondos. No voy a pasar nada. Entonces dentro de la función de cambio, por ahora, voy a escribir pass. A continuación, voy a crear una etiqueta antes de esta caja de pines. Aquí voy a definir un nivel de etiqueta igual a nivel y establecemos este nivel en una variable de nivel. Dentro de este nivel t tecleamos valor actual. Voy al valor actual en nuestra ventana. A continuación, tenemos que trabajar en la función de cambio. Al principio, necesitamos obtener el valor de esta caja de pines y también en almacenar el valor en una variable. Para eso, voy a definir una variable que es valor seleccionado y el valor seleccionado igual a spin dot gate. Usando el método de puerta, obtenemos el valor de esta caja de pines. Obtenemos el valor de esta caja de pines. Después de eso, quiero imprimir el valor de la puerta en nuestra terminal. Aquí voy a escribir una declaración de impresión, imprimir dentro de los unvers escribo selectate y luego imprimimos este valor seleccionado A continuación, también, es necesario configurar la etiqueta porque quiero mostrar el valor seleccionado en nuestra etiqueta también. Aquí, necesitamos escribir level dot config dentro del rundress y necesitamos configurar el parámetro text, text equal to y aquí uso método de Estring Después dentro del código doble, paso el valor actual y dentro del color ress paso el valor seleccionado. Voy a establecer este archivo. Así que cada vez que elijo algún valor del spin boox va a imprimir el valor actual Déjame mostrarte. Entonces , por favor, establece este archivo. Si ejecuto este código en mi terminal, aquí puedes ver la ventana, y esta es nuestra caja de giro. Si aumento el valor, ahora se puede ver que el valor actual es dos. Imprime el valor actual en mi ventana con la ayuda de etiqueta. También imprime el valor actual en nuestro terminal debido a esta sentencia print y aquí usamos función Callback con el parámetro de comando help hop Entonces al instante, cambió el valor cuando aumento el valor. Y ahora déjame mostrarte otra cosa de lo más importante. Si intentas cambiar el valor de la caja de giro mínimamente, sí, puedes. Yo te permito hacer eso. Entonces puedes pasar cualquier valor como el 56, pero esto no es lo que quiero. Si haces eso, el usuario puede pasar cualquier cosa, cualquier clave no válida como texto, número, etcétera, así que no la quiero Para resolver el problema, podemos usar otro parámetro, que es el estado. Entonces, cuando creas este spin boox, entonces necesitas usar otro parámetro, que es state Estado igual a Radón. Necesitas usar este parámetro y es importante. Entonces después de satisfacer si vuelvo a estar en este código e intentar cambiar el valor de spin boox manualmente, no va a funcionar Ahora bien, no puedes escribir nada aquí, pero puedes incrementar el valor Entonces espero ahora el concepto te quede claro qué es spin boox y cómo podemos usarlo Si hablo de casos de uso, se usa para pizarra cantidad o conteo, eligiendo hora, fecha o calificación. Entonces espero que ahora el concepto de caja de giro sea claro para ti. Así que gracias por ver este video, mantente atento para el próximo Tutorial. 22. Widget de escala Tkinter: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con Kiner. Hoy en este tutorial, vamos a aprender asistente de escala Kinter Este asistente de escala en inter proporciona un control deslizante para seleccionar un valor numérico en una cresta. Es ideal para ingresar números con retroalimentación visual como ajustes de volumen, brillo o sprit Si hablo de su característica clave, selecciona una onda continua o escalonada. ¿Puede ser horizontal o vertical? Además, muestra un manejador que el usuario puede arrastrar y admite funciones de devolución de llamada cuando cambia el valor Déjame mostrarte un ejemplo de asistente de escala. Como pueden ver, estamos en mi vis un coordinador de estudio y ya creo una simple ventana básica. Aquí vamos a crear una escala horizontal. Para crearlo primero, voy a definir una variable y nuestro nombre de variable es scale, scale igual a nuestro asistente de escala. Entonces dentro del Rundress necesitamos poner la escala en una ventana raíz, luego necesitamos definir desde dónde vamos a comenzar nuestro Vamos a iniciar la escala desde los ceros. Es el rango mínimo y nuestro rango máximo es 100 y definimos el rango máximo con dos parámetros. Entonces necesitamos definir el oriente. Utilizándolo, podemos definir la orientación. Podría ser vertical, de lo contrario horizontal. En nuestro caso, utilizamos horizontal. Entonces usamos el parámetro de comando. Se va a llamar a esta función show value, y ahora voy a crear la función. Voy a definir la función. Así que tip DF y nuestro nombre de función es mostrar valor. Después dentro del latón redondo, voy a pasar el do algún tipo val. Entonces dentro de esta función, por ahora, voy a escribir pass. Después de eso, necesitamos empacar la báscula en nuestra ventana raíz. Para eso, voy a escribir pack scale dot pack. Dentro de los tirantes redondos, asigno algún relleno, pago diez. A continuación, voy a crear una etiqueta que va a pintar la escala actual wid Para eso, defino una etiqueta variable y etiqueta igual a label y la metemos en una ventana raíz, y até este texto a esta etiqueta. Asigno este texto a esta etiqueta, seleccionado cero. Por defecto, va a imprimirlo y empaco esta etiqueta. Ahora bien, en nuestra función, necesitamos configurar esta etiqueta y configurarla aquípara escribir, algunos quitados pasan totype label punto Cf. dentro de los vestidos de correr, voy a escribir texto, y quiero confit text parámetro igual a, y voy a usar Estrem entonces dentro Dentro de los códigos dobles, voy a pasar esta declaración, seleccionarla dentro del cali vsus el valor El valor que obtenemos de esta escala, va a rezar el valor en esta etiqueta. Y voy a poner este archivo. Después de configurar este archivo, si no hago este código en mi terminal, aquí puedes ver la escala. Por defecto, por defecto, se establece en el cero, el valor mínimo. Si muevo este deslizador, como pueden ver, imprime el valor en nuestro nivel y podemos deslizarnos hasta el valor 100. Ahora déjame mostrarte las opciones que podemos usar con el asistente de báscula. Estos son los parámetros que podemos usar con la escala desde para orientar comando, resolución, longitud, intervalo de tick y nivel. Usando resolución, podemos definir el tamaño stp usando length, podemos definir la longitud del deslizador en pixel Usando intervalo pico, marca intervalo en la escala y cantar y usando nivel, podemos mostrar el texto por encima de la escala. Déjame mostrarte la demostración de todo este parámetro. De nuevo, estamos en mi código de estudio Visal y voy a y voy a comentar esto a línea Aquí voy a crear otra escala. Entonces al principio, voy a definir la escala variable. Escala igual al método de escala. Después dentro de las prensas redondas primero, necesitamos ponerla en una raíz de ventana raíz. Ahí después de eso, voy a usar nuestro primer parámetro de underce de underscoe y voy a comenzar nuestra escala Diez, y quiero escalarlo hasta diez. A continuación, voy a aportar el valor de oriente. Usando orient, podemos definir la orientación de la escala. Podría ser vertical, de lo contrario horizontal. Entonces escribe orient y esta vez voy a usar valor vertical, vertical. Después de eso, voy a usar resolución resolución, y voy a decir resolución 0.5. Después de la coma, entonces voy a decir longitud, longitud y rebaño para establecer la longitud 200, 200 píxeles Entonces vamos a usar intervalo grueso. Tick intervalo, y voy a configurarlo en. A continuación, voy a usar nivel nivel, y voy a establecer ajuste. Después de eso, después de eso, voy a usar comando perímetro, comando, comando calcomanía dos, y quiero llamar a esta función show value. Copio el nombre de la función y lo voy a poner aquí. Aquí utilizo todos los parámetros, resolución de orientación, longitud, intervalo de tick, etiqueta y comando. Hasta eso también en paquete el método de paquete de puntos de escala tipo escala. Voy a establecer este archivo. Up configurar este archivo letras en el código en nuestro terminal y ver cómo se ve. Antes de configurar este archivo, muevo la etiqueta por encima de esta escala, y voy a volver a configurar este archivo y ejecutar este código en nuestra terminal. Arriba en este código, como puedes ver, como puedes ver, es escala vertical. Definía la altura de escala 200 píxeles. Toma el intervalo dos. Entonces cero superior, imprime dos, luego pn cuatro, luego imprime seis, luego ocho, y luego diez Este es nuestro valor de ajuste de nivel de habilidad. Y también puedes notar cuando deslice mi deslizador, salta Dn 020.5, porque esta es nuestra resolución Harry dijo la resolución 0.5. Entonces en cada paso , salta hasta 0.5. la misma manera, si vuelvo a desplazarlo hacia abajo, ahora salta hasta ahora se ha convertido en 1.5. Así que en cada paso aumentó 0.5 valor a este deslizador. Y si hablamos de los casos de uso de este asistente, se utiliza para control de volumen de audio, etiqueta de sala de imágenes, control de brillo, velocidad de juego o dificultad, y muchos más. Ahora está claro para ti, cuál es el uso del asistente de habilidades en la introducción Gracias por ver este video, estén atentos para nuestro próximo tutorial. 23. Barra de progreso en Tkinter (a través de ttk): Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con otro tutorial relacionado con Python KintertDay en este tutorial, vamos a aprender Es otro mago en Kinter. Ahora bien, ¿qué es la barra de progreso? El asistente Barra de progreso de KinterTTT proporciona una representación visual del progreso de una tarea de registro Puede operar en dos modos. Y si hablo de su modo, viene con modo determinado y modo indeterminado El modo determinado muestra el progreso real 0-100%, y el modo indeterminado muestra movimiento sin indicar cuánto Básicamente se utiliza cuando no se conoce la duración. Déjame mostrarte la sintaxis básica de la barra de progreso. Como puedes ver, estamos en mi editor de código de estudio. Al principio, voy a importar el módulo inter. De Kinar, voy a importar estrella. Se va a importar todos los módulos necesarios. Después de eso, necesitamos importar la barra de progreso del Kint TK Aquí voy a escribir desde la barra de progreso de importación de Kint TK. Entonces voy a crear una ventana raíz usando la clase TK, root igual a TK. Después de eso, necesitamos ejecutar el bucle principal. Después de crear la ventana básica, voy a crear la barra de progreso, y la voy a almacenar en una variable y nuestra variable es PB, barra de progreso. PB igual a barra de progreso, dentro de las rondas primero queremos definir la raíz Después de eso, necesitamos brindar la orientación. En nuestro caso, orientar igual a horizontal. Entonces longitud igual a 200 y modo determinado. A continuación, voy a empacar esta barra de progreso, método pv dot pack, y voy a configurar este archivo. Seguro establecer este archivo. Si ejecuto este código en mi terminal, como pueden ver, así es como se ve una barra de progreso. Pero para iniciar un progreso, necesitamos definir una función. Pero antes voy a añadir un botón. Pero voy a aumentar la longitud de la barra de progreso, voy a hacerla 300. Además, voy a agregar un poco de relleno en YxS cuando lo empaque pad, Y, pad, Y igual a 20. De lo contrario, diez. A igual a diez, y voy a establecer este archivo. Ahora, vamos a crear un botón que va a activar una función. Se va a activar una función y van a iniciar el progreso. Voy a definir un botón variable, botón igual a botón y le asigno este texto, iniciar progreso a este botón y comando igual a él va a llamar a esta función, iniciar progreso. Ahora, necesitamos definir esta función, pero antes voy a empacar este botón, método Vtn punto PAC Después de eso, voy a copiar el nombre de la función, iniciar el progreso, y voy a definir la función. Entonces aquí antes de la clase DC, voy a definir una función, Dave, y nuestro nombre de función es start progress. Después de eso dentro de esta función, necesitas definir el valor actual de la barra de progreso, y para establecer el valor actual, necesitas escribir PV, luego dentro del cuadrado ss necesitas poner valor Qd Entonces puedes asignar el valor que quieras. PV cero significa que está vacío para empezar. Después de eso, voy a almacenar la ola de progreso máximo. Maxwell igual a 100. Después siguiente, voy a establecer el valor máximo de la barra de progreso. Nuevamente, estoy tipo PV dentro de la base cuadrada, voy a establecer el valor máximo igual a Maxwell. Quiero decir el centenar. Superior eso arriba que necesitamos para iniciar un bucle 0-100. Entonces para escribir para I en rango dentro del latón redondo es max Bell más uno. Aquí utilizo más uno para asegurar que 100 está incluido. Después de eso, dentro de este bucle de cuatro, necesitamos actualizar la barra de progreso. Entonces PV valor igual a I. Así que cada vez que se va a actualizar por uno. Entonces cada vez que va a actualizar la tabla de progreso. A continuación, necesitamos forzar a la aplicación I para reprimirla para reformular el valor de actualización Para eso necesitamos escribir pb dot update. Este método. Y para que la barra de progreso se llene sin problemas, necesitamos asignar poco retraso. Él voy a asignar 20 milisegundos de retraso, totoot punto superior dentro la carrera brces, voy a pasar Básicamente, va a introducir un retraso de 20 milisegundos entre cada actualización usando root dot Ater Ahora, después de configurar este archivo, si ejecuto este código en mi terminal, como pueden ver, esta es nuestra barra de progreso. Si hago clic en iniciar progreso, déjame mostrarte como puedes ver, comienza en la barra de progreso y sube hasta 0200 y llena la barra de progreso Entonces este es el ejemplo de barra de progreso determinada. Ahora déjame mostrarte otro ejemplo de barra de progreso indeterminada Como pueden ver, ya creo una ventana básica de kinser Ahora, voy a crear una barra de progreso, pero esta vez voy a usar el modo indeterminado. Aquí creo esta barra de progreso, PB igual a barra de progreso, luego orientación horizontal y longitud 300 modo indeterminado Después empaco esta barra de progreso. Después de eso, voy a crear el botón de inicio de carga. Yo defino este botón y nuestro texto de botón se empieza a cargar. Entonces mando esta función, Ejecutar indeterminado. Este es nuestro nombre de función, y empaco este botón. Con eso, voy a crear otro botón para detener el progreso. Aquí creo otro botón para detener el progreso, y se llama a esta función, stop indeterminado Ahora necesitamos definir tanto la función. Primero, voy a definir corrida indeterminada. Aquí Dave corre indeterminado dentro de la función, utilizo PV dot start Dentro de la carrera versus diez milisegundos. Se va a iniciar la barra de progreso en paso de análisis de diez milisegundos A continuación, tenemos que detener la barra de progreso. Para eso, voy a definir otra función y nuestro nombre de función es stop indeterminado Detener indeterminado dentro de esta función. En el tipo PV método de parada de punto para detener el avance brío. Si configuro este archivo y salvo código en mi terminal, aquí puedes ver la barra de progreso e iniciar el botón de carga y el botón de parada. Si alabo, botón de inicio, ahora puedes verlo mostrar movimiento sin indicar cuanto se hace. Lo usamos cuando no sabemos la duración. No sabemos cuántas veces va a consumir para completar nuestro trabajo, y si quieres detener este progreso solo en elogios, detente botón. Este es el ejemplo de barra de progreso determinada e indeterminada. Ahora bien, si hablo de su opción común, de lo contrario parámetro, viene con orient, length, mode, maximum, y value, ya estamos familiarizados con eso. Si hablo de los casos de uso, se usa para descarga de archivos, finalización de impuestos, pantalla de carga, instalador u operaciones por lotes. Esto es para este tutorial. Gracias por ver este video estén atentos para el Next Tutorial. 24. Menú y submenús en Tkinter: Hola chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial relacionado con el asistente Kiner Hoy en este tutorial, vamos a aprender menú y submenús en Kinter Ahora la pregunta es, ¿qué es un menú? Un menú en Kiner es una lista desplegable de opciones ubicadas generalmente en la parte superior de la ventana, como archivo, editar sanar en la mayoría de las aplicaciones, y los submenús son menús anidados que aparecen cuando se acuesta sobre una opción de Si te muestro el ejemplo de menú, este es el ejemplo de menú en cualquier aplicación. Esta es la barra de menús, y es uno de los asistente más importantes en cualquier aplicación GUI. Ahora hablemos de cómo crear un menú. Al principio, necesitamos crear un objeto de menú. Entonces necesitamos asignarlo a la ventana principal usando punto de ventana Cf. Después de eso, después de eso, necesitamos agregar menús de nivel superior como Archivo, Editar, ayuda, etcétera, Editar, ayuda, etcétera, usando agregar ataúd de guión bajo y puede agregar comandos y submenús usando el método Add underscoeommand y agregar método separador la ventana principal usando punto de ventana Cf. Después de eso, después de eso, necesitamos agregar menús de nivel superior como Archivo, Editar, ayuda, etcétera, usando agregar ataúd de guión bajo y puede agregar comandos y submenús usando el método Add underscoeommand y agregar método separador de guión bajo. No te preocupes. Te voy a mostrar todo esto, cómo puedes crear un menú y un submenú Si hablamos de los métodos clave y sus roles, estos son todos métodos. Tales como menu at command, at cascada, at separator, tear off, root dot config, etcétera Este método crea un nuevo menú. Usando at command, podemos agregar elementos accionables, y cantar en cascada, podemos agregar submenús Usando en separador, podemos agregar líneas horizontales. Usando arrancar cero, podemos eliminar la línea de trazos en la parte superior del menú. Es opcional. Usando el punto raíz C fig, podemos vincular la barra de menú a la ventana principal. Déjame mostrarte la demostración cómo podemos crear un principal. Vamos a saltar a lo práctico. Entonces como puedes ver, estamos en mi editor de código visual studio y creo un archivo Python main doot pie, y creo un archivo Python, maintPi y aquí, creo una ventana básica simple Al principio, necesitamos crear una maniobra. Para eso, voy a definir una variable llamada manuar Estiércol igual a aquí, necesitamos usar este menú de clase y dentro de él y dentro de él, necesitamos mencionar la ventana en nuestro caso root Después de crear la maniobra, voy a crear la viga de archivo Para eso, voy a definir una variable llamada menú archivo. Menú Archivo igual a mí. Y voy a mover este menú a esta manuba. Entonces entonces usas otro parámetro arrancar, arrancar cero. Quiero decir que va a quitar la línea de trazos en la parte superior del menú. Es opcional. Si quieres usarlo, sí, puedes. A continuación, es necesario agregar la etiqueta para este menú de archivo. También es necesario ponerlo en el archivo Menú. Para eso, necesitamos escribir manubar manubar dot en Método Barril Luego dentro de él, primero, hay que proporcionar el nombre del archivo, quiero decir el archivo de elemento de menú, y luego Menú igual al menú archivo y voy a configurar este archivo la misma manera, voy a crear otros dos elementos del menú como archivo, luego voy a crear Editar. Después de eso, voy a crear salud. Entonces aquí, voy a crear el menú Editar. Primero, voy a escribir Editar menú, Editar menú igual a menú y lo voy a poner en una barra de menús. Y también digo nivel de cero. Después de eso, manubar punto en cascada, etiqueta Editar y manqual al menú la misma manera, voy a crear otro, que es ayuda Menú. Tipo ayuda Mu igual al menú. Luego Mnubar punto en cascada, etiqueta Hill, Mnqual A continuación, necesitamos adjuntar el menú mal a la ventana. Para eso, necesitamos usar root dot config Method, root dot config. Dentro del más redondeado dice Menú igual al bardo de menú. Éste. Voy a poner esto bien. Después de configurar este archivo, si ejecuto este código en mi terminal, es como se ve nuestro menú. Ahora bien, si obero mi causer en el menú del archivo, aquí no se puede ver nada porque dentro del menú del archivo no crean opción para el Ahora dentro del menú de archivos, voy a poner Nuevo Archivo, Abrir Archivo, salir, etcétera, guardar, etcétera Quiero decir si hago clic en Menú Archivo, aquí puedes ver aquí puedes ver otras opciones como nuevo archivo, nueva ventana, abrir archivo, abrir carpeta, guardar SABA, etcétera Además, se puede ver una línea separadora. Entonces vas a crear eso. Podemos hacerlo usando el método at command. Primero, necesitamos escribir el nombre del menú en nuestro caso Archivo Menú. Así que voy a pasar así para pasar archivo menú punto al mando. Usando at command, podemos agregar un nuevo ítem. Podemos agregar un nuevo elemento dentro del menú en nuestro caso, nuevo y comanda este método. Así que cada vez que presionamos la nueva etiqueta, va a ejecutar esta función, new five, y nuestra función va a crear un nuevo archivo. Depende de ti lo que va a hacer tu función. Entonces por ahora, voy a definir una función, nuevo archivo. Entonces copio el nombre de la función. Entonces voy a definir esta función. Después de importar el módulo, aquí voy a definir la función llamada nuevo archivo. Fecha nuevo archivo y esta función va a imprimir esta línea en nuestro terminal, Nuevo archivo creado. No vamos a crear ningún archivo nuevo porque aquí solo trato de mostrarte cómo podemos crear el menú. Después de eso, después de crear el Nu, voy a crear otro nivel. Quiero crear abierto. Así que de la misma manera, necesitamos escribir filenu dot at command, label open, y esto va a llamar a esta función open file Y también, necesitamos crear esta función. Entonces aquí, voy a definir otra función, abrir archivo, y vas a imprimir archivo abierto, básicamente solo trato de imitar un menú, algo así Después de eso, quiero agregar un separador como este. Entonces si abro menú archivo, aquí se puede ver un separador. De la misma manera, podemos crear separador en Kinder. Para crear el separador en menú de tipo archivo punto en método separador. Arriba definimos el separador, como puedes ver, hasta definir el separador, a continuación, vamos a crear la salida. Así que aquí voy a definir otro archivo etiqueta menú punto al comando, label exit, y voy a llamar a esta función exit app. Ahora necesitamos definir este método. Así que aquí, Dave exit app inside root dot quit. Voy a poner estos cinco. Siempre que el usuario presione este botón, va a cerrar la ventana. Ahora subamos el archivo y ejecutemos este código en nuestra terminal. Quiero presionar el botón Ejecutar. Entonces como pueden ver, este es nuestro manuba si hago clic en archivo, aquí puede ver Nuevo abrir y salir Si presiono nuevo, como pueden ver en mi terminal, imprimir, nuevo archivo creado. Al mismo si presiono Abrir, va a imprimir, abrir, archivar abierto. Y si hago clic en la opción de salida, también puedes notar el separador aquí, y si hago clic en la opción de salida, va a salir de la ventana. Va a salir de la pura. Ahora de la misma manera, voy a agregar algunas otras opciones para editar, como copiar, cortar y pegar. Voy a agregar estas tres opciones. Aquí, dentro del menú Editar, voy a agregar todas las opciones usando el método de comando at. Primero, queremos atar el nombre del menú, en nuestro caso, Edit menu dot at command inside the Rundress need to use the label parameter, label equal to cut Y voy a poner este archivo. Ahora bien, si configuro este archivo y ejecuto este código en nuestro terminal, esta vez si lo abro y si hago clic en esta opción Editar, aquí puedes ver ambas opciones. Cortar, copiar y pegar. Ahora, saltemos al menú Ayuda. Aquí, voy a crear un submenú dentro de él. Dentro del menú Ayuda, aquí voy a definir otro menú que es sobre menú. Acerca del menú igual al menú y lo voy a poner dentro del menú Ayuda. Entonces este es nuestro menú de Ayuda y aquí voy a poner el menú Acerca de dentro del menú Ayuda. Después de eso, dentro del menú At, voy a agregar las etiquetas, etiqueta, como Acerca de nosotros, virgen info, etcétera Entonces también, necesitamos poner esto sobre el menú dentro del menú de ayuda. Así que tenemos que utilizar el método en cascada. Iotype helpmenu punto en cascada dentro del latón redondo, etiqueta asigna esta etiqueta sobre y Mnequal a acerca Aquí creamos el menú A, entonces necesitamos poner este menú acerca de dentro del menú Ayuda usando el AtCasCat. Voy a establecer este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal, ahora se puede ver un meno completamente funcional. Si hago clic en el Menú Ayuda, ahora puedes ver un submenú, del cual se trata Si coloco mi tarjeta sobre este menú sobre, aquí puedes ver que está abierta otra ventana y puedes ver ATs y Virgin Info Aquí creamos un hombre totalmente funcionable y conocemos el proceso de cómo podemos crearlo. Esto es para este tutorial. Gracias por ver este video. 25. Separador, ventana de vidrio acrílico, cuaderno: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con el nuevo tutorial relacionado con los asistentes Kiner Advanced Aquí voy a explicar tres importantes asistente de estructura de maquetación en Kiner separador, Pan Ventana y cuaderno Estos asistentes se utilizan principalmente para organizar y mejorar el diseño de la interfaz de usuario en aplicaciones más complejas Ahora, comencemos con el primero separador, separador Tk. Es una línea delgada utilizada para separar visualmente diferentes secciones de tu GUI. Podría ser horizontal o vertical. Si hablo de su sintaxis, es necesario escribir Tt clase separador. Entonces dentro del run brass, aquí necesitamos pasar el elemento paréntivo en nuestro caso root Entonces necesitamos proporcionar la orientación, tal como horizontal, por lo demás vertical. Veamos la demostración de cómo podemos usarlo. Como pueden ver, estamos invitados al studio codior y creo un separador de nombre de archivo Python punto pi Primero, importamos nuestro módulo Kiner e importamos todo desde el Kinter Después importamos TDK de Kiner. Después de eso, creamos una ventana raíz. Esta es la ventana básica. Ahora voy a definir una etiqueta. Voy a definir una etiqueta a esta ventana raíz. Etiqueta dentro de los versos aquí, voy a pasar la raíz de la presa de la ventana principal. Entonces voy a asignar este texto encima de la línea y luego empacar esta etiqueta. Después de eso, voy a crear este separador. Para crear el separador tt punto Sebatocass. Luego dentro de la runbress primero, necesitamos proporcionar el nombre de la ventana en nuestra raíz de caso, luego necesitamos proporcionar la orientación Orientar igual a aquí quiero dibujar una línea horizontal, así paso horizontal. Después empaco este separador usando pack Mthwor llene este en Xxs y ademas asigno poco relleno en direccion YxS ademas asigno poco relleno en direccion Después de eso, voy a definir otra etiqueta. Etiqueta y voy a poner la etiqueta debajo de esta línea horizontal. Aquí dije el texto de la etiqueta debajo de la línea, y luego empaco esta etiqueta. Después de este archivo, si ejecuto este código en nuestra terminal, déjame mostrarte esta es la línea. Esta es la línea de la que estoy hablando. Aquí trazo una línea entre las dos etiquetas. Si hablo de ello casos de uso, es separar de barras de herramientas de sección o agrupar áreas dentro de una ventana Ahora hablemos de ventana de pan. Básicamente, es un continer que divide la ventana en sartenes móviles y redimensionables Se pueden agregar múltiples asistentes dentro de él. Si hablamos de ello sintaxis primero en el tipo ventana paned, ventana paned, luego dentro de las rondas para proporcionar necesitamos proporcionar el nombre de la ventana En nuestro caso raíz, entonces necesitamos proporcionar el oriente, luego tenemos que pasar la orientación. En nuestro caso, sería horizontal, de lo contrario vertical. Ahora déjame mostrarte la demostración lo que es ventana con paneles Como pueden ver, creo otro archivo Python ventana paned punto Pi y aquí creo una ventana básica simple arriba kinter Al principio, voy a definir una ventana de pan. Para eso, voy a definir una variable PW PW igual a ventana paned Entonces dentro de la Runress aquí, root es el padre de la ventana panorámica, y usamos orient horizontal Es decir que vamos a colocar la sartén una al lado de la otra. Si quieres colocarlo arriba e abajo, entonces puedes usar vertical. Después de eso, necesitamos empacar este Pw pack y dentro del redondeo dice, aquí usamos dos parámetros, fill y expand Si usas llenar ambos, entonces va a expandir el asistente, tanto la dirección. Quiero decir horizontal y verticalmente. Si el ritmo libre está disponible y se expande igual a un medio, va a permitir que el asistente crezca cuando se cambie el tamaño de la ventana. Y ahora voy a poner una etiqueta a esta ventana de pan. Quiero colocarlo al lado del regazo. Para eso, laped igual a etiquetar aquí pongo la etiqueta dentro de esta ventana de pan, y escribo texto cama pan y nuestro color de fondo es azul claro Después de eso, necesitamos agregar el nivel de elevación dentro de esta ventana de sartén como una sartén. Para eso, voy a escribir pw dot add dentro del run bass está encendido De la misma manera, voy a crear la etiqueta correcta. También, tenemos que ponerlo en el lado derecho. Para eso, nuevamente, necesitamos usar add method pw add right. Ahora, después de configurar este archivo, si ejecuto thecde en mi terminal, así es como se ve nuestra ventana paned Si aumento el tamaño de la ventana, como pueden ver, acuerdo al tamaño de la ventana, se redimensiona las sartenes Básicamente, lo usamos para editores lado a lado como File Explorer y editor. Además, podemos usarlo para configurar paneles, área de vista previa, etcétera Ahora, hablemos del último, que es el cuaderno. Básicamente, lo usamos para crear una interfaz con pestañas similar al navegador, similar a la pestaña del navegador o diálogo de configuración Usándolo, puedes saltar una pestaña a otra pestaña. Si hablo de ello sintaxis, primero hay que definir el nombre de la variable, luego en el tipo TDK notebook y luego hay que pasar el nombre de la ventana padre Hasta eso, en usar el método add. A continuación, debe pasar el marco hijo y el texto, el nombre de la pestaña. Déjame mostrarte la demostración de cómo se ve el cuaderno. Como pueden ver, aquí creo otro archivo Python, cuaderno punto cinco. Al principio, importamos el módulo Ginter y aquí importamos todas las funciones, clases y constantes necesarias Después importamos TK. TTC significa módulo TK temático, que contenía magos temáticos modernos como cuaderno, barra de progreso y vista Tre y creamos la Al principio, voy a definir un cuaderno. Para eso, voy a declarar un cuaderno variable igual al cuaderno Ttkt y lo ponemos en una ventana raíz Después de eso, necesitamos tack este cuaderno, notebook dot pack dentro del proceso de ejecución, Heroseepand, igual a uno, y llenar igual a y Expandir uno significa que el cuaderno se expandirá para usar todos los espacios disponibles en la ventana, y llenar ambos significa que el cuaderno se estirará tanto horizontal como verticalmente cuando se cambie el tamaño de la ventana. A continuación, voy a crear RaltFramef de dos pestañas. Entonces voy a definir dos variables tabo y tacto, Tabo igual a frame, y pongo este frame en el cuaderno y toco dos iguales a frame, también pongo esta en la A continuación, voy a asignar un texto de etiqueta para la pestaña. Así que aquí estoy la etiqueta de propina, y voy a ponerla en una pestaña uno y Amutip bienvenido a tab y empaco esta De la misma manera, necesitamos crear otra etiqueta. Y esta vez voy a poner éste en la pestaña dos. A continuación, necesitamos agregar cada marco como una pestaña separada al cuaderno. Para eso, necesitamos usar el método add. Voy a agregar tanto la pestaña, y quiero agregarla por separado. I type notebook dot at Tab one, text tab one and notebook dot ad tab two text tag two. Aquí aparecerá la pestaña con el título de pestaña uno y la etiqueta dos aparecerá con el título de la Tabulación dos. Ahora, fijemos el archivo. Vamos a configurar el archivo y ejecutar este código en nuestra terminal. Después de ejecutar este código en nuestra terminal, aquí puedes ver el resultado. Esta es la tabulación uno. Dentro de esta pestaña, Hey print, llegaremos a la tabulación uno con la ayuda de esta etiqueta. Si pasas el cursor sobre él, puedes ver que se ha vuelto azul. Si hago clic en él, ahora saltamos a la pestaña dos, similar al navegador Aquí imprimimos, esta es la pestaña dos con la ayuda de esta etiqueta. Si tratamos de expandirlo, sigue siendo su trabajo. Porque Harry lo expande tanto en la dirección. Es muy similar con la pestaña del navegador, y se utiliza para organizar configuraciones, múltiples vistas o contenido categorizado. Espero que ahora el concepto sea claro para ti. Gracias por ver este video, Sytune para el próximo capítulo 26. Vinculación de comandos (método más simple): Oigan, chicos, me alegro de volver a verles. Este es el primer tutorial relacionado con el manejo de eventos de Kinter. En este tutorial, vamos a aprender el enlace de comandos, método más sencillo en Kinter encuadernación de comandos es la forma más básica y amigable para principiantes de manejar eventos en Kinter Por lo general, se usa con asistentes como botón, botón verificación, botón de radio y hombres Puede asignar una función a un asistente utilizando el parámetro command. Cuando el usuario interactúa con ese asistente, se ejecuta la función Si hablo de ello sintaxis, primero escriba parámetro de comando luego es necesario asignar el nombre de la función. Recuerda, cuando pasamos el nombre de la función, no usamos paréntesis Es significa que no se va a ejecutar inmediatamente y la función no puede tomar argumento a menos que se envuelva. También se puede utilizar con la función Lambda. Lambda es una función de un trazador de líneas. Entonces déjame mostrarte el primer ejemplo, comando básico del botón. Entonces como pueden ver, aquí creamos una ventana básica simple de GY, y aquí le asigno un ejemplo de enlace de comando title. Sabemos que ya estamos familiarizados con este evento, pero necesitamos aprenderlo paso a paso. Por eso te voy a mostrar eso. Entonces voy a definir un botón, botón igual a botón, y el texto del botón es genial. Y aquí uso el parámetro de comando. Comando igual a nuestro nombre de función es genial. Ahora, tenemos que empacar este botón. Entonces aquí tecleamos botón, dot pack Mthod. Entonces necesitamos definir esta función. Voy a definir esa función en esa posición. Entonces lo voy a poner aquí. Voy a establecer este archivo. Dave, saluda, imprime hola Kiner. Este es el comando básico del botón, y ya estamos familiarizados con eso. Entonces si ejecuto este código en mi terminal y alabo el botón, déjame mostrarte si alabo saludar, como puedes ver en mi terminal, se imprime hola, Kiner Ahora, déjeme mostrarle otro ejemplo. Ahora, cada vez que llamamos a la función, quiero pasar un argumento. Para eso, necesitamos usar la función Lambda. Déjame mostrarte. Así que de nuevo, estoy de vuelta a mi editor de código de estudio y creo otro archivo principal de Python también que Pi y yo creamos una ventana básica simple. Al principio, voy a definir un botón y dije botón texto, patearme. Entonces en coma, voy a usar una función Lambda. Comando igual al tipo Lambda, luego Colin. Entonces para llamar a la función y dentro del paréntesis aquí, voy a pasar el do Quiero decir un argumento. Ahora necesitamos procesar este argumento. Yo para definir esta función, mostrar mensaje. Aquí, voy a definir la función. Copo el nombre de la función, mostrar mensaje. Voy a escribir Dave y nuestro nombre de función es mostrar mensaje. Entonces dentro de las rotondas como argumento, vamos a pasar mi nombre Nombre. Entonces dentro de la función aquí, voy a escribir print statement, print. Entonces dentro de los vestidos redondos, voy a usar cuerda F aquí. Cadena F dentro de los códigos dobles, hola coma. Después dentro de las Clases, voy a pasar la variable nombre y semi para terminar esta línea y exclavación. Voy a subs fiy Ahora, en vez de mi nombre, puedes pasar cualquier cosa aquí. Puedes pasar cualquier nombre aquí. Ahora, tenemos que etiquetar este botón. Para eso, voy a escribir BTN botón punto PAC Mathod tag Ahora después de empacar este botón, voy a configurar este archivo y ejecutar este código en mi terminal. Después de ejecutar este código, aquí puedes ver el botón click me. Si hago clic en este botón, como lo pueden ver impreso en mi terminal, hola, mi nombre Jointo Básicamente, Lambda se utiliza para crear una función ónima que envuelve la original con parámetro. Y si hablamos de limitación de mando, sin información de eventos y sin control anticipado. Sin información del evento significa que no obtuviste detalles como qué tecla o botón del mouse se utilizó. Además, no tienes control avanzado como posición del mouse o la entrada del teclado. Y si hablo de ello casos de uso, lo usamos con botones como enviar, guardar, cancelar, etcétera También, lo usamos con menús como archivo, salida, etcétera, y también lo usamos para acción rápida simple que no necesita datos de eventos Este es el método de enlace de comandos más simple. Y así es como podemos usarlo. Gracias por ver este video estad atentos para el próximo tutorio 27. Uso del método bind() (método avanzado): Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro tutorial relacionado con el manejo de eventos inter, y hoy vamos a usar el método Bind. Es un método avanzado. El método bind le permite adjuntar un controlador de eventos a un asistente, que pueda reaccionar a eventos de mouse, eventos keywod u otros Si hablo de su sintaxis totype wizard dot bind método, entonces dentro del redondo dice, necesitamos pasar la descripción del evento entre corchetes angulares Entonces necesitas llamar a la función handler. Eventos como evento mouse, evento palabras clave, etcétera Todos estos son eventos comunes del ratón. Si usamos el botón dash one, entonces es decir, dejar que el mouse haga clic. Si usa el guión inferior dos, es un clic medio medio. Si usas la parte inferior D tres, es un clic derecho medio. Si usa el botón de doble guión uno, significa clic de doble labio. Y si usamos P uno hace movimiento, significa arrastrar el ratón con el botón b. Si usamos Enter, es que los autos malos son el asistente Enter. Si usamos licencia, los autos son dejar mago. Todos estos son eventos de mouse que podemos usar con Kiner. Ahora déjame mostrarte ejemplo básico con patada de ratón labial. Como pueden ver, estamos en mi editor de código de estudio y creo un archivo Python main dot Pi y aquí creo una ventana Kiner básica Aquí primero, voy a definir una extremidad básica, etiquetar igual a etiqueta, y aquí le asigno un texto, haga clic dentro de mí. Este es el texto de la etiqueta, y dije diagrama color azul claro y ancho 30 y alto cinco. Entonces tenemos que empacar esta etiqueta. Para empacar esta etiqueta, voy a escribir etiqueta punto PAC Math hole. Después dentro de las rotondas voy a agregar algo de padding, pad en YxS igual a, voy a agregar 20 pixel padding, y voy a configurar este archivo Después de eso, entonces voy a atar esta etiqueta con un evento. Para eso, voy a escribir etiqueta que método bind, bind. Después dentro de las prensas redondas, luego dentro del latón redondo, voy a usar este botón de evento uno. Dentro de los códigos dobles, dentro de los códigos dobles y dentro del corchete angular, voy a escribir el botón uno. Entonces voy a escribir coma. Después de eso, voy a llamar a un método y nuestro metódem está al hacer clic en guión bajo, A continuación, necesitamos definir el método. Básicamente, héroe uso lap mouse clic evento. Ahora, cuando elogio el evento lap mouse click en esta etiqueta, entonces quiero ejecutar esta función al hacer clic para definir esta función. Así que definamos la función. Entonces aquí, voy a definir la función. Dave al hacer clic dentro del evento de Rundresss. Entonces dentro de la función, ahora date prisa pasar el evento del mouse como parámetro. Entonces necesitamos extraer la posición clicada, la posición de clic XXS y OXs e imprimirla en Para eso, voy a escribir print statement, print, aquí uso Estring luego escribo mouse click en dentro de los Runds dentro del evento calices, XXs y evento YxS Se va a imprimir la posición del click. Precepto esta pila. Si ejecuto este código en nuestra terminal. Ahora aquí puedes ver la etiqueta. Ahora si hago clic en cualquier parte de esa etiqueta, como pueden ver, se imprime declaración, clic del ratón a 177 de los YxS y 23 pixeles de los Xxs Y si hago clic en esa posición, ahora puedes ver el valor XXs 28 y el valor YXS 33 Esta es la coordenada de clic del ratón. Entonces este es el ejemplo del evento mouse. Ahora, déjeme mostrarle otro ejemplo. Pero antes de mostrarte el ejemplo de evento de palabras clave, me gustaría mostrarte algunos eventos de palabras clave. Estos son los eventos comunes de palabras clave. El primero es la clave. Es malo si presionamos alguna tecla, entonces va a desencadenar este evento. El siguiente es el regreso. Es para la tecla Enter. Entonces ven scape. Es para scape key. Entonces sube, es para flecha arriba, luego baja, es para flecha abajo. Entonces ven A. Es para Control plus A. Empecemos la práctica y veamos cómo podemos usar el evento de teclado. Como puedes ver, estamos en el editor de código de estudio de usuario y ya creo un archivo Python principal dos Pi. Al principio, voy a crear un campo de entrada. Voy a tomar un campo de entrada. Entonces defino una entrada variable entrada a entrada, y la ponemos en una ventana raíz y empaco este campo de entrada. Después de eso, voy a vincular este campo de entrada con teclado evet. Para eso, voy a escribir entry dot bind dentro de la clave Run Brass, y voy a llamar al método key. Vamos a llamar a esta función. Este método, disparadores clave en cualquier elogio clave. A continuación, definimos en función de tecla. Para ese tipo de dobladillo en la llave dentro del evento de prensas redondas. Entonces dentro de esta función, voy a escribir print statement, print. Después dentro de las prensas redondas, timón usa cuerda A y dentro de los códigos dobles. Dentro de los códigos dobles, voy a escribir key prese, key Prese clave, luego dentro la Cliress aquí quiero imprimir el personaje real Así que para escribir incluso a punto char va a imprimir el carácter real. Quiero decir el personaje real producido por la prese clave A continuación, quiero imprimir el nombre de la llave. Para eso, necesitamos usar las claves de eventos YM. Déjame mostrarte eso. Aquí escribo símbolo, luego dentro de los corchetes, luego dentro de las teclas de punto Caliverseven YM Básicamente, va a imprimir básicamente va a imprimir el nombre legible por humanos de la clave. Ahora vamos a ejecutar el código en nuestra terminal. Vamos a configurar el archivo y ejecutar este código en nuestra terminal. Ahora tenemos una sensación de entrada. Y si escribo algo como A, ahora, como pueden ver en nuestro terminal imprima la tecla A, el símbolo también es A. Ahora si alabo enviado, ahora se puede ver para caracteres no imprimibles, no imprime nada En nuestra prese clave, no imprime nada, pero en nuestro símbolo, imprime retroceso y cambio Para eliminar el carácter A, utilizo retroceso. Por eso imprime retroceso, y luego alabo turno Por eso se mecanografió enviado. la misma manera, si escribes ult key, ahora puedes verlo imprimir Alt L. Si alabo desde el lado derecho, ahora puedes verlo impreso. la misma manera, si alabo tecla Scape, imprima scape y si presiono uno, dos, tres, cuatro, lo contrario, cualquier número, ahora se puede ver tecla pulsada cuatro, símbolo también es cuatro. Este es el ejemplo de evento clave común. Ahora déjame mostrarte el último ejemplo donde voy a usar múltiples eventos en un botón. Vamos a usar múltiples eventos en un solo botón, así que déjame mostrarte eso. Como pueden ver, nuevamente, creo una ventana básica simple, y al principio, voy a definir un botón. Primero, voy a definir un botón y empaco este botón. Entonces voy a usar algunas evadas con encuadernación. Entonces voy a usar múltiples eventos. Al principio, voy a usar mouse ingresado evento. Entonces para atar el método de enlace de punto de botón. Aquí voy a usar Enter, y después utilizo la función Lambda. Landa, E, impresión, ratón Entró. A continuación, voy a usar dejar evento. Entonces Teclea botón, punto bind, deje Lambda, mouse labiado por fin, voy a usar botón clic evento Escriba tn punto bind. Botón uno, imprima los dientes del botón. Si configuro este archivo y ejecuto este código en una terminal, déjame mostrarte. Siempre que coloco el cursor sobre el botón, si entro el cursor de mi mouse en este botón, ahora puedes verlo imprimir mouse ingresado la misma manera, si quito mi cursor de este botón, imprimo vuelta del ratón. Si marco este botón, entonces puedes verlo imprimir, botón pulsado Si vuelvo a quitar el botón, otra vez, imprime mouse like, mouse enter, y abotónelo. Así es como múltiples eventos trabajan juntos. Y si quieres desvincular algún evento, sí, puedes. Para eso, necesitas escribir botón tn punto Desenrollar botón uno Quiero decir, ahora, si haces clic en este botón, no va a imprimir nada. Déjame mostrarte. Entonces para satisfacer en este código en mi terminal, y si sostengo mi cursor, ahora se puede ver una impresión, mouse ingresado, mouse deslizado Pero si hago clic en él, como pueden ver no funciona porque aquí desvinculamos este evento Espero que ahora te quede claro cómo podemos usarlo. Gracias por ver este video Stune para el siguiente tutorial 28. Enfoque, grab y estado del widget: Hola, chicos. Es bueno verte de vuelta. Este es el último tutorial relacionado con el manejo de eventos, y en este tutorial, vamos a aprender el enfoque, agarre y el estado del asistente. Ahora, hablemos de enfoque. El enfoque determina qué evento de teclado recibe el asistente. Sólo un mago puede tener foco a la vez. Y si hablo de métodos de enfoque comunes, entonces tenemos set de enfoque. Da enfoque de teclado a este asistente. Entonces tenemos puerta de enfoque. Está escrito el mago que actualmente tiene foco. Por fin tenemos fuerza de enfoque, trabajo de enfoque de fuerza, incluso la ventana no está activa. Estudiemos la táctica y veamos cómo funcionaba el enfoque. Como puedes ver, estamos en mi editor de código de estudio y ya creamos un archivo Python y ya creamos un archivo Python focus dot pi y creamos una ventana básica simple usando Kiner Ahora voy a tomar dos entradas en forma. Entonces aquí, voy a tomar total dos campo de entrada, y ya empaco estos dos campos de entrada, Entrada uno y entrada dos. A continuación, quiero crear un botón. Y cada vez que presionamos el botón, se va a enfocar, va a poner el foco en la entrada dos. Para eso, voy a definir un botón variable, botón igual a, voy a definir botón. Botón y presiono este botón en una ventana raíz y nuestro botón toma esta entrada de enfoque dos Apricma en nuestro parámetro común, usamos una función Lambda Entrada Lambda dos puntos, conjunto de enfoque. Aquí usamos el método de conjunto de enfoque para establecer el enfoque en el botón dos. Siempre que presionemos el botón, esta función Lambda va a establecer el foco en la entrada dos. Después de eso, voy a empacar este botón. Tecleo el método de paquete de puntos de botón, y voy a configurar este. Ahora, volteemos el código en nuestra terminal. Arriba este código en nuestra terminal, aquí puedes ver por defecto, no hay foco en nuestro campo de entrada. Pero si hago clic en la entrada de enfoque dos, como pueden ver, después de hacer clic en este botón, empieza a enfocarse en el campo de entrada dos. Si hago clic en fuera de esta ventana en cualquier lugar fuera de esta ventana, pierde su foco. Ahora, pongamos el foco en el campo de entrada uno. Cuando hago clic en este cuerpo exterior de esta ventana, quiero enfocarme en el campo de entrada uno. Volvamos al código. Para eso, voy a escribir entrada un punto set focus, y voy a establecer este archivo. Si reune este código, ahora puedes ver Default Bifaul su conjunto se enfoca en el campo de entrada Si hago clic en este botón, ahora se enfoca en el campo Entrada dos. Ahora vamos a unir con una prese clave para mostrar el foco actual Para eso, voy a usar el método root dot bind. Aquí, voy a atar root dot bind y utilizo cualquier método clave, y a esta función llamo a esta función show focus. A continuación, necesitamos definir esta función. Yo para definir la función, muestran foco, incluso igual a ninguno. Después inserte este método, aquí necesitamos obtener el foco actual. Para eso, voy a definir una corriente variable, corriente igual a puerta de enfoque de punto raíz. Aquí utilizo método, método puerta de enfoque para obtener el cual está enfocado. A continuación, quiero fijar el estado actual del tipo print, foco actual está en coma canina voy a establecer esta fide Si ejecuto el código en nuestro terminal, ahora, si presiono alguna tecla, una tecla como voy a presionar A, ahora se puede ver imprimir, foco actual está en la entrada. Si presiono este botón y presiono cualquier tecla como G, ahora imprimo, el enfoque actual está en la entrada dos. Aquí vinculamos el foco con keywote event y obtenemos y obtenemos el valor de enfoque . ¿Cuál está enfocado? ¿Qué campo de entrada está enfocado? Ahora hablemos de agarrar. Captura todos los eventos para un asistente específico. Es útil para modelos de diálogos donde se desea bloquear interacción con otras ventanas, de lo contrario, magos Quiero decir que va a crear otra ventana diferente para ejecutar otra cosa. Hasta que no cierres este, no podrás volver al original. Si hablo de su método, tenemos el método grab set, grab release method, grab current method. Método de conjunto de agarre, captura todos los eventos hasta que se lancen. Agarra la liberación, suelta el agarre y la corriente de agarre devuelva el mago que tiene agarre. Déjame mostrarte la demostración de cómo podemos usarlo. Nuevamente, vuelvo al editor de código de estudio de mis usuarios y creo un archivo Python, agarro el punto pi y creo la ventana básica. Al principio, voy a definir un botón que va a mandar para abrir una nueva caja de modelo, de lo contrario modelos. Soy algunos definen el botón botón igual a botón. interior lo colocamos en una ventana raíz, entonces nuestro texto de botón es modelo abierto, y va a comandar este método, modelo abierto. Esta función, modelo abierto, y empaco este botón. Ahora necesitamos definir podríamos definir esta función. Entonces aquí voy a definir la función, Dave modelo abierto. Entonces dentro de este capó matemático, aquí voy a definir la caja modelo. Para eso, para crear el cuadro de modelo que voy a usar, voy a definir un modelo variable, modelo igual a etiqueta superior, y voy a pasarlo en una ventana raíz. Entonces voy a establecer título y la geometría de este modelo. Entonces después de definir el título del modelo y la geometría del modelo, voy a establecer una etiqueta. Etiqueta y coloco esta etiqueta dentro del modelo y digo texto y dije texto de nivel, ciérrame antes de regresar a la ventana principal. Tenemos que cerrar el modelo antes de regresar a la ventana principal. Después de eso, necesitamos crear el botón de cerrar. Entonces aquí, voy a definir el botón cerrado. Y como se puede ver, dentro del comando, utilizamos el método model dot destroy. Este método va a destruir el modo. A continuación, necesitamos capturar todos los eventos para esta ventana. Para eso, necesitamos usar el método de conjunto de agarre de puntos modelo. Entonces aquí, voy a definir el modelo punto grab set. Captura todos los eventos para esta ventana. Después de eso, a abrir la ventana, tenemos que darle foco a este modo. Para eso, necesitamos usar el método Model dot set focus method. Aquí voy a definir el modelo punto set focus para darle foco al modelo. Después de eso, voy a asignar una pausa de ejecución hasta que Model cierre. Para eso, necesitamos usar el método de ventana húmeda, algún tipo modelo ventana húmeda, y la voy a colocar dentro del modelo. Voy a establecer este archivo. Se configuran este archivo, encuentra en este código en nuestro terminal, y como puede ver en nuestra ventana, tenemos un botón nombre modelo abierto. Si presiono este botón, como pueden ver, se abre una ventana de modelo. La caída de lástima también fijó un foco en esta ventana del modelo. Por eso se destaca. Y como te dije, aquí uso el método grab dot set. El método del conjunto de agarre fuerza todos los clics y la pulsación de teclas a la ventana del modelo, no a esta ventana Si trato de hacer clic en este botón, como pueden ver, no funciona. Ahora éste está activo. Ahora tenemos todo el foco en esta ventana hasta que cierras la ventana. Entonces si presiono el botón cerrar, de lo contrario, lo cierro, entonces hemos recuperado el foco en la ventana principal Ahora, de nuevo, podemos hacer clic en este botón y abrir un nuevo modelo. Entonces esto es lo que podemos hacer con el método Grab set. Ahora déjame mostrarte otra demostración de grab. Aquí voy a usar el método Grab Release. Así que aquí creo otro archivo Python grabto punto Pi, y aquí voy a explicar cómo podemos usar método Grab set y grab Release juntos Al principio, dentro de esta ventana, voy a definir un botón. Entonces aquí defino un botón simple usando esta variable BTN y escribo, haga clic en M. Entonces entonces voy a definir otro botón, que va a desencadenar el evento de bloqueo Entonces defino este botón, botón y pruebo este botón en una ventana raíz y nuestro botón toma evento grab. Y éste y este botón mandan esta función, log event. Ahora, tenemos que trabajar en esta función. Necesitamos crear definir la función. Pero voy a definirlo más adelante. Vamos a crear otro botón. Aquí voy a crear otro botón, ¿cuál va a liberar el evento grab? Para eso, nuevamente, defino este botón y nuestro texto de botón es release event y va a comandar este método, release event. Hasta eso voy a usar un nivel para imprimir nuestro estado. Defino una variable status, status igual a nivel y lo coloco en una ventana raíz y nuestro texto no es grab active y empaco este estado. Hasta eso voy a definir evento de registro y función de evento de lanzamiento. Hagámoslo. En nuestra función de registro de eventos, voy a configurar el Grab. Dentro del método Log event, button dot Grab set. Ahora, después de que Grab esté activo, ticks solo funcionan en este botón. Quiero mostrar el estatus en nuestro nivel. Para eso, necesitamos configurar esta stata. Voy a etiquetar estado punto Cfig y cambio el texto del estado igual a texto igual a grab está activo Da click en W en este botón. De la misma manera, tenemos que trabajar en el método release event. Entonces aquí, voy a definir este evento de lanzamiento de evento, evento cinta, lanzamiento de agarre de punto de botón. Después de agarrar liberado, también va a cambiar el estado. Para eso, de nuevo, a tipografía punto config texto igual a agarrar liberado Puedes hacer clic en cualquier lugar. Y voy a poner este archivo. Ahora vamos a ejecutar el código en nuestra terminal. Alguien que presione el botón Ejecutar. Como puedes ver se abre esta ventana y tenemos múltiples botones. Ahora puedes ver en nuestro estado, no grab active. Ahora voy a dar click en el evento de lanzamiento. Si marco Evento de liberación, ahora imprime, agarra liberación. Puedes marcar en cualquier lugar. Ahora somos capaces de hacer clic en cualquier lugar. Podemos presionar el botón de evento de nuevo. Pero si haces clic, agarra el botón par. Ahora, nuestro estatus ha cambiado. Imprimo, agarrar está activo. Los clics solo funcionan en este botón. Ahora bien, si trato de establecer, no es trabajo. Incluso trato de presionar el botón SEM, agarrar incluso, aun así no es trabajo. Es sólo trabajo en esto, haga clic en el botón. Quiero decir sin agarrar, todos los botones están funcionando bien. Pero con solo agarrar, haga clic en el botón responder. Éste. Si hago clic en cualquier parte de nuestra ventana, aún reza, haga clic en el botón M. Hasta que soltemos el agarre, se ignoran otros botones. Esto es lo que podemos hacer con el cangrejo. Esto es para este tutorial. En el siguiente tutorial, vamos a hablar sobre el estado del mago. Gracias por ver este video. Estén atentos para nuestro próximo Tutorial. 29. Estado del widget: Oigan, chicos, me alegro de volver a verles. Este es otro tutorial relacionado con el manejo de eventos Kiner. Hoy en este tutorial, vamos a aprender el estado del mago. La opción de estado en inter asistentes controla si un asistente está deshabilitado o un estado especial de Hobart Si hablo de los estados comunes, normales, inhabilitados y activos. Normal es completamente funcional. Desactivar nivelación no se puede hacer clic o escribir T. Un activo es especialmente utilizado para el estilo, Henry mouse flotar sobre él Ahora déjame mostrarte un ejemplo con el botón Wizard state. Como puedes ver, editor de código REM studio, y aquí creamos un simple archivo Python. Buttonse buttonndersco statate punto pi y Al principio, voy a definir un botón. Aquí voy a atar VTN igual a botón y lo voy a poner en una ventana raíz, y aquí dije botón gusto habilitar También, llamo a una función Lambda usando parámetro común Lambda y va a pintar esta declaración, kit de botones. Entonces empaco este botón. Así que cada vez que presionamos este botón, va a imprimir este botón de línea haga clic en nuestra terminal. A continuación, necesitamos crear otro botón de alternancia que vaya a activar una función. Entonces aquí, voy a definir otro botón de alternar, botón alternar igual a botón, y nuestro texto de botón es habilitar y deshabilitar. Y este botón va a activar esta función botón de alternar. Ahora bien, esta función va a desactivar y habilitar este botón, el primer botón. Entonces aquí, voy a definir la función, dap botón de alternar. Y dentro de esta función, voy a usar condición de cadera. botón Herodoty I dentro del cuadrado s es estado igual a igual a normal Si este estado es normal, entonces dentro de esta condición de cadera, voy a configurar el botón. Voy a configurar esta variable de botón. Aquí, voy a configurar total a parámetro. Entonces para escribir tn dot config dentro del proceso round, primero, voy a asignar un nuevo estado de parámetro, y voy a hacer que se deshabilite. Además, voy a cambiar el texto de este botón que está deshabilitado. Es trabajo si la condición coincide con esto, si es normal. Entonces en nuestras condiciones s en nuestra condición aquí configuro button dot config, State become normal egging y text enable egging Ahora nuestro botón de palanca es como un interruptor. Primera vez si lo presionamos, luego va a desactivar el botón y si vuelvo a presionar el botón de alternar, va a la normalidad el botón. Vamos a establecer el archivo y ejecutar el código en nuestro tiempo. Arriba para ejecutar este código, como puedes ver, tenemos un botón llamado Enable. Si presiono el botón Activar, ahora puedes notar en nuestro terminal botón de impresión pateado. Ahora funciona bien. Pero si hago clic en Desactivar ahora este botón el estado se convierte en desactivar. También, se puede ver en este botón el texto. Ahora si trato de presionar el botón, no va a funcionar. Pero si vuelvo a presionar el segundo botón, ahora se vuelve habilitar de nuevo. Ahora funciona bien. Este es el ejemplo del estado del botón. Ahora déjame mostrarte otro ejemplo con entrada iz estado. Como pueden ver, creo otro asistente de entrada de archivos Python underscostate dot Pie y creo una ventana básica simple Al principio, voy a tomar un asistente de entrada, algún tipo de entrada igual a entrada, y empaco esta entrada. Entonces voy a definir un botón, que va a llamar a bloqueo y función Lo. Voy a definir el botón, botón igual a botón y nuestro botón toma esta entrada de registro y comando, y va a llamar a esta función, Desbloqueo de registro. Entonces empaco este botón. Después de eso, necesitamos definir esa función. Entonces voy a definir la función, Dave, bloquear desbloquear. Entonces dentro de esta función, voy a usar bcdion Aquí voy a escribir I entrada, estado igual a normal, después quiero configurar el asistente de entrada. Aquí, necesitamos escribir entrada punto config, estado igual a deshabilitado. Voy a hacer que se deshabilite. Además, voy a cambiar el texto del botón. Voy a lograrlo. Botón punto C fig t igual a la entrada de desbloqueo. Entonces en nuestra parte s, algún tipo s dentro de la condición s, voy a hacer que este sea normal. Entrada punto config, voy a hacerlo normal y también quiero cambiar el texto del botón. Así que escribo botón punto C fig t igual a la entrada de bloqueo. Voy a establecer este archivo. Después de configurar este archivo, voy a ejecutar este código en nuestra terminal. Después de presionar el botón Ejecutar, aquí puedes ver nuestro campo de entrada. Ahora bien, si trato de entrar en algo como ABCD, lo que sea, ha funcionado bien Pero si registro esta entrada, si hago clic en este botón Log, botón LogEntry, ahora puedes ver ahora no podemos poner nada ni eliminar nada de este feed de entrada Y si quieres desbloquearlo una y otra vez presionar este botón, desbloquea la entrada. Ahora se vuelve a desbloquear de nuevo. Ahora puedes hacer lo que quieras. Entonces este es el ejemplo con asistente de entrada. Ahora déjame mostrarte el último ejemplo. Ahora en este ejemplo, vamos a hablar de estado activo. Creo un archivo Python activo underscostate punto Pi. Como te dije antes, el estado activo es principalmente para botón de estilo cuando flotaba o lamió Déjame mostrarte el ejemplo. Al principio, voy a definir un botón. Entonces como pueden ver, aquí defino un botón, y nuestro botón se hace cargo de esto sobre mí, y nuestro botón, el color de fondo del botón es azul claro. Y empaco este botón con relleno de 20 píxeles en YxS. Ahora, después de configurar este archivo, si hago clic en este botón, aquí se puede ver el botón. Si hago clic en este botón, puede ver cuando el botón se activa, el color de fondo del botón se vuelve gris. Puedes ver el color de fondo gris en este botón porque es el color predeterminado, pero quiero cambiar el color cuando el botón se active. Ahora el botón es un estado activo porque presiono mi labio tick de mi mouse sobre el botón. Si la levanto, nuevamente, se convierte en estado normal y su color de fondo se vuelve azul claro. Entonces quiero cambiar el color de fondo activo. Para eso, necesitamos usar un parámetro llamado Bagram activo y aquí le asigno color verde claro Ahora, después de subir este archivo, si resmo este código e intento hacer clic en este botón, si activo este botón, ahora se puede ver que el color de fondo se vuelve verde verde claro Entonces de esto es de lo que estoy hablando. Este es el uso del estado activo. Espero que ahora te quede claro. Así que gracias por ver este video. Estén atentos para nuestro próximo capítulo. 30. Miniproyecto de aplicación de dibujo con método de evento y enlace: Hola, es bueno verte bolsas. Hoy, vamos a crear una aplicación intter simple usando el método bind Básicamente, quiero mostrar cómo podemos usar el método de bilis en nuestros proyectos. Aquí, vamos a crear una sencilla app de dibujo. Puedes dibujar líneas usando tu mouse. Usando el ratón, dibuja la línea en el lienzo. Además, puedes cambiar el color de la pintura cuando colocas una llave en particular. Déjame mostrarte la demostración lo que vamos a construir hoy. Como puedes ver, esta es nuestra ventana raíz principal. En esta ventana, tenemos un lienzo, y luego tenemos una etiqueta. Ahora, el color actual se selecciona negro. Este es el valor por defecto. Si trato de trazar una línea, ahora puedes verla dibujar una línea en nuestro lienzo. Para trazar una línea, necesitamos mover nuestro mouse dentro del área del lienzo. Entonces tenemos que presionar la tecla izquierda y arrastrar nuestro mouse. Eso va a trazar una línea. Ahora puedes notar que dibuja la línea en color negro. Ahora quieres cambiar el color. Ahora decides que vas a usar el color rojo. Si presiono R, como pueden ver en nuestra etiqueta, se imprime el color actual rojo. Ahora bien, si trato de dibujar una línea, se puede ver la línea de color rojo. la misma manera, si quieres usar color verde, entonces necesitas presionar G. Ahora puedes verlo dibujar una línea en color verde. Si quieres amarillo, necesitas presionar Y. Ahora el color actual es amarillo. Se puede ver la línea de yemas. Para el azul, es necesario presionar B. Ahora el color actual es azul. la misma manera, si quieres púrpura, ahora el color actual es el morado y dibujas una línea con color morado. Si quieres volver a color negro, en ese caso, necesitas pasar K. Así como puedes ver, podemos cambiar color y podemos dibujar línea. Es una aplicación de dibujo muy simple, y creo esta aplicación con la ayuda del método Bind para entender cómo funciona el método bind, cómo funcionan los eventos de teclado y cómo funcionan los eventos de arrastre del mouse. Entonces comencemos la práctica. Por último, vamos a empezar a codificar. Como puedes ver, creamos el proyecto de archivo Python punto pi. Primero, importamos el módulo Kiner, importamos todo. Después creamos la ventana principal. Al principio, aquí creamos una variable de instancia de clase TK y la variable es root. Ahora la raíz se convierte en la ventana principal. Entonces establecemos el título del punto raíz y aquí decimos nuestro nombre del proyecto, dibujamos y cambiamos de color con el método bind. A continuación, establecemos una geometría a esta ventana, W 500 y altura 400. Por fin ejecutamos nuestro bucle principal. Ahora, al principio, necesitamos crear un lienzo para el área de dibujo. Para eso, voy a definir una variable y nuestro nombre de variable es Canvas. Así atar Lona igual a lona. Entonces dentro de la brra redonda dice, voy a poner este lienzo en la ventana raíz, después dije color de fondo Nuestro color de fondo de lona es blanco. Después definimos ancho de este lienzo ancho 480 píxeles y alto, 320 píxeles. Después de eso, voy a empacar este lienzo. Tipo canvas dot pack y aquí le asigno algo de relleno en YxS voy a configurar este archivo Después de configurar este archivo, si ejecuto este código en nuestra terminal, es como se ve nuestra área de canvas en esta ventana. A continuación, e imprima una etiqueta de estado para el color de fondo. Entonces aquí, voy a definir una etiqueta. Entonces para escribir etiqueta de estado igual a etiqueta, y la ponemos en una ventana raíz, y aquí, voy a poner este texto, color actual negro. Entonces empaco estado, esta etiqueta de estado. Si configuro este archivo y ejecuto esta ventana en una terminal, ahora puedes ver la etiqueta de estado. El color actual es el negro. Este sería el color por defecto para nuestro pincel. Después de eso, necesitamos almacenar el color actual. Necesitamos almacenar el color actual en una lista mutable, para que pueda cambiarse en función Primero, voy a escribir un sencillo y comentar. El color actual se almacena en una lista mutable, por lo que se puede cambiar en funciones Entonces voy a iniciar el color actual en una lista, y voy a cambiar el color actual usando una función. A continuación, necesitamos atar el lienzo y tenemos que llamar a un evento que va a dibujar en este lienzo. Para eso, herotyp un comentario, bind mouse drag para dibujar Entonces voy a atar el método Canvas dot bind, y dentro de las runras aquí uso este evento común Aquí utilizo este evento de ratón B un movimiento. Es un arrastre medio del ratón con botón de elevación. Entonces, cuando desencadenó este evento usando nuestro mouse, entonces va a llamar a esta función draw. Así que aquí uso el evento del ratón. A continuación, voy a usar un evento de teclado para cambiar el color, para cambiar el color de nuestro pincel. Para eso, necesitamos escribir Root dot bind y dentro de los rounders herro usar este evento clave de evento Es decir cualquier evento clave y va a y va a activar esta función, cambiar de color. Ahora, de acuerdo a la posición del ratón, esta función de dibujar va a dibujar la línea. Para eso, voy a definir la función. Aquí, voy a definir función de dibujo, tap draw. Y voy a pasar el evento. En nuestro caso, un movimiento incluso un evento de movimiento. Se activa al hacer clic del ratón y arrastrar sobre este lienzo. A continuación, extraemos la posición XX y YXS de nuestro Carson. Para eso, voy a definir dos variables X e Y, X igual al evento X e Y igual al evento Y, y almacenamos las coordenadas en esa variable. A continuación, tenemos que trazar líneas. Para eso, necesitamos usar create like method. Entonces escribe, Lienzo, Lona punto, Createine, esta. Luego dentro de los versos redondos, al principio, necesitamos definir el punto de inicio. Voy a pasar XX es valor y YxS ancho. Así que pasa X, Y. Este es el punto de partida. También adentro para pasar el punto final. Para eso, hasta coma y quiero crear el punto final a solo un píxel de distancia para crear un punto diminuto. Para eso, voy a más X con uno. Voy a agregar un testamento con cada coordenadas. Y más uno. Después coma superior, voy a definir el color de relleno Para relleno de color de relleno igual a aquí voy a usar color actual. Este, el color actual que definimos. Copio el valor, color actual, variable, y aquí voy a asignar color actual, control V. Luego dentro los reces cuadrados voy a definir el índice Como se puede ver a la vez, proporcionar que va a pasar sólo un valor. Voy a pasar el índice número cero. Entonces hay que definir. Con del trazo de línea. Para eso, voy a escribir con, voy a usar tres pix. Voy a establecer este archivo. De la misma manera, voy a definir otra función. Voy a escribir Dave y esta función es para cambiar el color de cambio de color. Dentro de las rondas, voy a pasar el teclado, evento de teclado real. Entonces dentro del polen aquí voy a teclear fa, voy a teclear pass. Y voy a poner este archivo. Ahora voy a configurar este archivo y ejecutar este código porque necesitamos verificar, es dibujar nuestra línea correctamente o no. Por defecto, como te dije, va a seleccionar el color negro porque el pelo es negro, color actual negro. Entonces voy a ejecutar este archivo. Y si pongo el cursor sobre él en este lienzo y lo coloco, haga clic y arrastre, como puede ver dibuje una línea Entonces aquí trazamos con éxito una línea. Ahora solo hay que cambiar el color. Vayamos al código. Ahora puedes notar aquí usamos evento de teclado. Siempre que alabemos alguna tecla de nuestro teclado, va a activar esta función. Ahora, necesitamos obtener el valor clave, cuya clave es elogiada. Para obtener el valor, aquí voy a definir una variable llamada key, key igual a event dot character, y voy a convertir este carácter en minúscula Yo uso un tipo R, va a convertirlo en minúscula Después de eso, voy a definir un diccionario de color. Para eso, voy a definir una variable colores iguales a colores iguales a dentro de los Cles A él le asignamos un diccionario. Para R, el valor del diccionario es rojo. F G, es verde. Para B, es azul, Y es amarillo, para Ps púrpura, para O es naranja y para K es negro. Ahora necesitamos cambiar el color actual con colores seleccionados. Para eso, voy a usar condición EP si K en colores. Entonces dentro de esta condición EP, color actual igual a colores punto K. Aquí seleccionamos el índice de color actual, que es cero y voy a reemplazar con cualquier valor que pasemos. Supongamos que si el usuario presiona G, entonces va a reemplazar el color actual negro G. Aquí accedemos al color usando diccionario, colores, y dentro de las bases cuadradas pasamos el valor clave. De este diccionario, va a obtener el valor y reemplazar el color actual con eso. Después de eso, también quiero cambiar el color de estado. Para eso, aquí, voy a escribir etiqueta de estado punto config Método. Y primero, voy a cambiar el texto, y utilizo Epstring color actual dentro de los autos dentro del rebaño Carlss pasan el color actual Color actual dentro del índice de cero de resis cuadrada. Ahora bien, si se vuelve verde, lo contrario azul, reemplazaría el negro por azul de lo contrario verde. Además, tenemos que manejar el error. Si el usuario pasa alguna otra tecla como la tecla scape, tecla Mayús, cualquier otra tecla, necesitamos manejarla. Tenemos que imprimir el valor. Para eso, en nuestra parte s, dentro del bloque s, voy a escribir status level.com text igual a nnn key, y aquí vamos a imprimir la ¿Qué tipo de usuario de valor? Supongamos usuario tipo A, no coincide con nuestro diccionario. Entonces va a imprimir la clave de monja A, y voy a poner este archivo Después de configurar el archivo, ejecutemos el código en nuestro terminal y veamos si funciona correctamente o no. Entonces ejecuto este código en mi terminal y aquí puedes ver la ventana de Canvas. Por defecto, el color actual es ese. Si dibujo alguna línea, dibuja la línea en color negro, pero quiero usar color rojo. Para eso, necesitamos usar, voy a presionar el comando R. Cuando presiono R, ahora puedes ver que el color actual es rojo. Ahora si dibujo una línea, ahora se puede ver que el color de la línea es rojo. la misma manera, si quieres cambiar el color, como si quieres usar color verde, entonces necesitas presionar G. Ahora si dibujo una línea, puedes ver la línea de color verde. Si quieres azul, entonces necesitas presionar B y aquí puedes ver la línea de color azul. Si quieres naranja, entonces puedes presionar O. Ahora puedes ver la línea de color naranja y si quieres negro de nuevo, entonces necesitas alabar K. Después de presionar K, ahora puedes ver la línea de color negro nuevamente. Así es como puedes cambiar de color en nuestro lienzo. Espero que les guste este pequeño proyecto. Gracias por ver este video, estad atentos para nuestros próximos estudios. 31. Variables Tkinter y enlace de datos: Hola, chicos. Un placer verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y hoy en este tutorial, vamos a aprender la variable Kiner y el enlace de datos Kinar proporciona clases variables especiales tales como artículos de cuerda, intvariable, artículos dobles, artículos booleanos, Ya estamos familiarizados con eso. Básicamente, es actuar como un envoltorio alrededor de los valores normales de Python, y estos permiten ponderar el enlace de datos entre su código Python y los asistentes decir, cuando la variable cambia, el asistente se actualiza automáticamente cuando cambia el valor del asistente, la variable se actualiza automáticamente. Si te mostramos las clases variables, estas son todas clases variables. Ya estamos familiarizados con eso y ya lo usamos en nuestros tutoriales anteriores. Stringwar Itware, double ware, Bollenware, stringwar almacena texto lo contrario cadena, como hola, Itware solo aumentadores de tienda, como 42, doble ware, almacenar números flotantes, como almacenar números flotantes Y los booleanos se almacenaron a través y cae. Ahora déjame mostrarte un ejemplo donde voy a usar todo tipo de variables. Como puedes ver, aquí defino una ventana básica de Kinker simple en este archivo Python, y nuestro nombre de archivo Python es KinkerUnderscore Al principio, dentro de esta ventana, voy a definir algunas variables. Voy a definir variable de cadena, variable incisiva, variable doble y variable Bollin Al principio, voy a definir variable de cadena, string eran iguales a Tkt string ware y dentro de la corrida brrass aquí dije valor, siguiente, voy a definir Itiser variable, intvare igual a tat en ware y voy a establecer el valor y aquí voy a establecer la cinta de valor A continuación, voy a definir la doble vajilla. Quiero establecer el valor femenino. Los dobles son iguales a k artículos dobles. Dentro del rundress valor igual a 3.14, y por fin, voy a definir el Booleanos fueron iguales a tk valor Bollenvre igual a true. A continuación, voy a definir algunos sts que se unan a las variables. Para eso, pasé voy a escribir un solo comando en, UZxS ligado a variables A continuación, voy a tomar campo de entrada para la variable string. Entonces escribe t dot jury y voy a colocar el campo de entrada en esta ventana raíz. Entonces toma variable igual a string were y empaco esta variable. Para la variable intsor, voy a usar caja de giro. Voy a atar t spin Box, voy a colocarla en una ventana raíz. Aquí voy a establecer valor mínimo, quiero establecer desde el valor cero y el valor más alto 100, dos valor 100. Y voy a establecer la variable sabor int ware. Es media diez. Por defecto, ya selecciona diez. A continuación, voy a tomar otro campo de entrada para la taquilla. Escriba entrada de boleto, y voy a colocarlo en una ventana raíz y tomar variable igual a Dwelwre Empaque este Después de eso, después de eso para la vajilla Bullen, voy a tomar un botón de cheque Botón de verificación de punto T, voy a colocarlo en una ventana raíz, y nuestro botón de verificación lleva esta edad aquí dije la variable, Viable igual a wollen war Ha sido cierto o falso. Ahora puedes notar cada asistente vinculado a una variable. Ahora después de establecer este archivo, si ejecuto este código en nuestro terminal, se puede ver el resultado. Este es nuestro primer campo de entrada. Este es el cuadro de giro, este es nuestro segundo campo de entrada, y este es el botón de verificación. Después de eso, voy a definir un botón. Eso va a desencadenar una función y podría imprimir todo el valor en nuestro terminal. Entonces aquí voy a definir el botón. A los botones, y voy a pasar el botón en una ventana raíz, texto igual a mostrar valores. Entonces comando igual a mostrar valores, y empaco este botón. Y ahora necesitamos definir la función show value. Entonces copia el nombre de la función, y yo voy a definirlo aquí. Muestran valores, luego dentro de esta función, el interior de esta función, voy a imprimir todo el valor de la variable, como la variable string, la variable int, la variable Dual y la variable booleana Entonces para la primera variable, voy a escribir print string y hemo type stringw dot gate Usando el método string dot Gate, podemos obtener el valor de esta variable. Eso ya lo sabemos. Trato de mostrarte eso y de la misma manera, obtengo todos los valores de variables como int valor variable, valor variable doble y valor de variable booleana Necesitamos usar gatewthod para obtener el valor de una variable. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal y presiono el botón, mostrar valor. Ahora puedes ver en mi terminal, imprime todo el valor de la variable. Cadena hola, en diez, doble 3.14 y booleano Si no estoy de acuerdo este botón de verificación y y elogio, así que de nuevo, ahora puedes ver en nuestra variable booleana cae Este es el ejemplo con todo tipo de variable. Espero que ahora te quede claro. Ahora, déjame mostrarte otro ejemplo. Ahora, déjame mostrarte otro ejemplo con actualización en tiempo real usando el método dot trace add. Un objeto un poco variable como stringware intserware tiene un método llamado dot trace add que ejecuta una función automáticamente cada vez que una función automáticamente cada vez Se ejecuta automáticamente. Déjame mostrarte cómo podemos usar. Entonces primero, voy a definir una vajilla de cuerda. Para eso, voy a definir una variable text ware igual a tdt string ware Hemo no dijo nada como Después de eso, voy a tomar un campo de entrada. Aquí tomo el campo de entrada en la variable de entrada, y até este campo de entrada con esta variable de texto. A continuación, voy a definir una etiqueta que va a imprimir el valor actual. Voy a escribir label igual a tkdot label, y lo coloco en una ventana raíz, y es texto, escribo algo arriba Y uso una fuente real y el tamaño de fuente es 14. Y luego empaco esta etiqueta. Ahora para activar la función trace at, no voy a usar ningún botón. Voy a atar artículos de texto, punto, rastreo en. Aquí utilizo el método. Texto ware punto, rastro en. Dentro de la runbra dice escribir, y yo llamo a esta función en texchange Cuando escribo algo en el campo de entrada, va a poner el valor actual a esta variable. Básicamente, la variable de texto enlaza tanto a la entrada como a la función web de llamada. Y cuando la variable cambia dentro del campo de entrada, este método se activa y llama a esta función. Y ahora necesitamos definir el texto sobre el método de cambio. Esta función, Suntpe Dave texto sobre el cambio. Dentro de las rondas, aquí utilizo arcos estelares. Si no te importa el parámetro extra, puedes usar arcos estelares Después de eso, configuramos esta etiqueta level dot config, level dot config, y quiero cambiar el texto a value. Selecciono el parámetro de texto, y dentro de él, uso el valor de corriente Estre dentro de la calibración, necesitamos obtener el valor actual usando el método de puerta Escribo puerta de dos puntos. Y si configuro este archivo y ejecuto este código en mi terminal, aquí puedes ver la ventana. Ahora bien, si escribo algo en el campo de entrada, supongamos uno, dos, tres, cuatro, como pueden ver, instantáneamente se imprime en nuestra etiqueta. Lo muestro en nuestra etiqueta. Puedes escribir cualquier cosa. Podría ser un personaje, punto, lo que sea. Este es el ejemplo de actualización en tiempo real rastreamos el método. Se activó la función cuando se cambia el valor de la variable. Trabajo sólo con variables. Esto es para este tutorial. Gracias por ver este video, mantente atento para nuestro próximo tutorial. 32. Bandejas de mensajes (messagebox): Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y hoy en este tutorial, vamos a trabajar en los cuadros de diálogo. Kinter vienen con tres tipos de cuadro de diálogo cuadro de mensaje, diálogo de campo y selector de color Usando el cuadro de mensaje, puede mostrar información de advertencia y error, y usando el cuadro de diálogo de campo puede abrir y guardar archivos. Y usando selector de color, puedes elegir cualquier color hoy en este scutorial voy a hablar de buzón de mensajes. El módulo de cuadro de mensajes Kinter se utiliza para mostrar el diálogo emergente con mensaje y botón opcional Si hablo de ello función común, viene con función show info. Se utiliza para mostrar información Papa, luego mostrar advertencia. Se utiliza para mostrar advertencia Papa. Mostrar ero, se utiliza para mostrar error papa. Hacer una pregunta. Está escrito sí o no. Entonces pregunta o cancela. Está escrito a o Forbes. Entonces pregunta, sí, no. Está escrito a o falso también. Por fin hemos pedido reintentar cancelar. Se escribe a través de o Fab. Empecemos lo práctico y veamos cómo podemos usar la caja de líos. Como puedes ver, estamos en mi editor de código de estudio de usuario, y creo un archivo Python main dot pie y aquí creamos una ventana básica de Kiner A continuación, para usar caja de líos, necesitamos importar caja de líos. Voy a escribir desde Kinter Import caja de líos. Después de ingresar el cuadro de mensaje, voy a definir un botón que va a activar una función. Entonces para escribir pk botón de punto, y pruebo este botón en esta ventana raíz y nuestro botón toma Ts, mostrar cajas de masas. Y este botón manda esta función, mostrar en. Ahora, necesitamos definir esta función, mostrar en. Ahora, definamos la función. Entonces aquí, voy a definir a Dave, mostrar todo dentro de la función. Aquí, al principio, quiero mostrar información en nuestro buzón de mensajes. Entonces para usar este método, cuadro de mensaje punto Mostrar Info. Al principio, tenemos que pasar el título. En nuestro caso, info. Entonces tenemos que pasar el mensaje de información. Si configuro este archivo y ejecuto este código en nuestro terminal y presiono este botón, mostrar cuadro de líos. Mostrar cuadros de mensaje, aquí puede ver la ventana de información, ventana de mensaje de información. Si presiono Bien, cierra esta ventana. Entonces este es el primer ejemplo de cuadro de diálogo de mensaje. Ahora déjame mostrarte una advertencia. Quiero comentar esta línea, y aquí, voy a escribir mensaje boox dot show warning Primero pasa primero para pasar el título, luego para pasar los mensajes de advertencia. Este es un mensaje de advertencia. Use este archivo si yo en el código en mi terminal y elogio mostrar cuadros de mensaje. Aquí puedes ver la señal de advertencia y este es un mensaje de advertencia. A continuación, tenemos mensaje de error. Comento esta mentira, y voy a mostrar el mensaje de error. Voy a mostrar Showeror mensaje box dot show error. Primero, tenemos que proporcionar el título luego nuestro mensaje de error. Después de configurar este archivo, si ejecuto este código en mi terminal y presiono este botón, aquí puedes ver el mensaje de error con signo de cruz, este icono. Ahora déjame mostrarte preguntas Quotien pero antes necesitamos comentar esta línea y usar ask quotienf voy a definir una variable y nuestra variable m Contesta uno igual a los líos boox dot pregunta a Quoc. Primero, para proporcionar el cuotien del título entonces y después tenemos que preguntar el cocien ¿ Que pronuncie ese usuario tiene dos opciones, sí o no. Para fijar la respuesta, voy a escribir print statement. Dentro de las rondas está ask ui y voy a pasar la respuesta, sí o no. Y voy a poner este archivo. Configuré este archivo si ejecuto este código en mi terminal. Y presiona este botón. Ahora este cuadro de diálogo como cociente con signo de palabra. ¿Te gusta Python, sí o no? Si paso sí, como puedes ver, podrías trentar terminalmente como Quotien Ahora déjame mostrarte otro cuadro de diálogo. Pero antes voy a comentar esta línea y aquí, voy a declarar otra variable respuesta dos. Contesta dos iguales a masas pantano punto como sn como título, voy a pasar sn ¿Quieres continuar? En Askino si presionas sí, es media es verdad, y si presionas no, es media es falsa. Déjame mostrarte. Voy a pintar la respuesta de valor a y voy a sub este archivo y ejecutar este código en nuestra terminal. Arriba para ejecutar este código, si presiono este botón, ahora pregunta, quieres continuar si presiono sí, como puedes ver, cómo se imprimió true. Pero si presionamos no, entonces va a imprimir formularios. De la misma manera, de la misma manera hemos preguntado o cáncer. Yo defino otra variable respuesta tres, respuesta tres igual a dos, masas cuadro punto preguntar, Bien, cáncer. Se utiliza para cambios, y también devuelve a través de valor falso. Si imprimo el valor en nuestro terminal y configuro este archivo y ejecuto este código en nuestro terminal, si presiono este botón, como puede ver, ¿ quiere establecer cambios? Si presiono Cancelar, ahora puedes ver que la respuesta es falsa. Si presiono sí, si presiono sí, entonces va a imprimirlo. Básicamente, lo usamos para configuraciones de sap. Y por fin, hemos pedido reintentar cancelar. Comento tanto la línea voy a escribir respuesta cuatro. Contesta cuatro iguales a masas box dot, pregunta reinténtalo Cancelar. Y como título, voy a pasar reintento. Error al reintentar la conexión. Se pide reintento, y luego imprimo el id. también, este va a devolver verdadero y falso en mi terminal, déjame mostrarte si ejecuto este código en mi terminal y presiono este botón, arroja mensajes de advertencia La conexión falló, pedí que se reintentara. Si presiono reintentar, va a pasar Estos son el ejemplo de función común de la caja de líos. En el siguiente tutorial, voy a hablar de otro cuadro de diálogo que es el diálogo de archivos. Gracias por ver este video Tay tune para nuestro próximo tutorial. 33. Diálogos de archivos: Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con otro cuadro de diálogo relacionado con el tutorial. Y hoy en este tutorial, vamos a aprender cuadro de diálogo de archivo. En nuestro tutorial anterior, aprendemos caja de líos. Utilizamos el cuadro de mensaje para mostrar información, advertencia, error, etcétera Pero en nuestro cuadro de diálogo de archivos, podemos abrir archivo, podemos guardar archivo, podemos abrir múltiples archivos ats, todo. El diálogo de archivos Kint permite al usuario seleccionar archivos o carpetas. Y si hablamos de ello funciones comunes, viene con un total de cuatro funciones. Pregunte nombre de archivo abierto. Selecciono un archivo para abrir. Se usa para un solo archivo y va a devolver la ruta del archivo como una cadena. Entonces tenemos Ask Open nombres de archivo. Selecciono varios archivos. Está escrito par de ruta de archivo. Entonces tenemos Pide guardar como nombre de archivo. Lo usamos para seleccionar la ubicación para guardar un archivo. Está escrito un archivo string por fin, tenemos directorio ask. Se utiliza para carpeta selectiva, y devuelve una ruta de carpeta como una secuencia. Entonces déjame mostrarte la demostración de todas estas funciones. ¿Qué podemos hacer con eso? Entonces como pueden ver, estamos en mi editor de código sult studio. Al principio, ingresamos a Kinar como TK. Luego creamos la raíz de ventana básica y igual a Tika TK. Después después establecemos un título a esta ventana, ejemplo de diálogo de archivo, y establecemos la geometría. 300 por 200 y por fin ejecutamos el bucle principal. Al principio, voy a crear un botón, Su ti tdt button class Después dentro de los ronbres colocamos este botón en una ventana raíz, luego texto igual a abrir archivo y comando igual a, llamo a esta función abrir archivo, y luego empaco este botón Después de eso, necesitamos definir esta función open file, así que copio el nombre de la función. Aquí voy a definir la función, Dave, abrir archivo, y dentro de esta función, al principio, voy a definir una variable llamada ruta de archivo, archivo, ruta guión bajo, ruta de archivo igual a aquí, necesitamos usar diálogo de archivo Para ello, necesitamos importar el cuadro de diálogo del archivo. Voy a escribir desde Kinard quiero importar diálogo de archivo Ahora, quiero usar ask open file name. Primero, necesitamos definir el diálogo de archivo, el punto de diálogo de archivo. Desde el cuadro de diálogo de archivo, quiero usar como nombre de archivo abierto. Luego dentro de las rotondas luego dentro de la resis redonda, al principio, necesitamos asignar un título de título para la ventana de diálogo Entonces escribe title Liqual para abrir un archivo. Entonces una coma tras coma, necesitamos definir los tipos de archivo Es importante. Así que escriba tipos de archivo. Luego dentro de la base cuadrada, podemos definir tipos de archivos particulares. Supongamos que si quieres seleccionar archivo txt, archivo de texto, entonces necesitas definir el nivel del archivo archivo de texto, entonces necesitas mencionar la extensión. Quiero decir el patrón de archivo. Para eso necesitas escribir star dot TXT. Dot TXT es la extensión, y su estrella, significa cualquier cosa. Podría ser cualquier cosa. Podría ser uno, dos, tres, punto TXT, podría ser texto, podría ser símbolo, lo que sea. la misma manera, si quieres seleccionar, otros tipos de archivos, supongamos que si quieres seleccionar el archivo Python, en ese caso, primero, necesitas proporcionar el nombre de nivel en nuestro caso los archivos Python y luego necesitas pasar la extensión. Como star dot py. Es para el archivo Python. Y si quieres acceder a todos los archivos, en ese caso, necesitas escribir todos los archivos, es la etiqueta, y para la extensión, necesitas escribir star dot star. Es victoria tras punto, podría ser cualquier cosa. Podría ser TXT, podría ser Pi, podría ser archivo Illustrator, PSD, lo que sea. Básicamente, aquí creamos filtro punto abajo. Ese usuario puede seleccionar el tipo de archivo entre TextFile y el archivo Python Después de abrir la carpeta, si usa o selecciona el archivo Python, entonces va a mostrar solo el archivo Python de la carpeta, y si selecciona todos los archivos, entonces va a mostrar todos los archivos de la carpeta. Déjame mostrarte la demostración. Ahora, como puedes ver en mi documento dri try, tenemos múltiples tipos de archivo, como archivo PDF, archivo de imagen JPG, archivo de imagen PNG, archivo de Adobe Illustrator, archivo de texto, archivo Python, archivo CSS, archivo script, y tmlfle También tienes archivo Photoshop. Ahora volvamos al código. Así que preestablece este archivo si ejecuto este código en mi terminal, déjame mostrarte y ahora puedes ver nuestro cuadro de diálogo de archivo, y tenemos un botón abrir archivo. Ahora, trato de abrir cualquier archivo, super click abrirlo abrir Una ventana de archivo abierta. Este es nuestro cuadro de diálogo de archivo, y lo nombramos OpenAFLE Quiero acceder a la carpeta de documentos Si abro la carpeta Documento, ahora solo puedes ver el archivo de texto porque en nuestra sección de filtros, seleccionamos el archivo de texto. Ahora quiero seleccionar el archivo Python. Después de seleccionar el archivo Python, solo podrá ver el archivo Python de esta carpeta en esta carpeta. Si selecciono todos los archivos, ahora pueden ver todos los tipos de archivos juntos. Ahora puedes seleccionar cualquier archivo de esta carpeta. Aquí usamos los dos tipos de filtro, Text TextFile filter y Python file filter Ahora puedes seleccionar todos los archivos Python. Ahora puedes abrir este archivo. Puede seleccionar este archivo. También puedes abrir este archivo. Después de abrir este archivo, no se puede ver nada aquí porque no hacemos nada después de abrirlo. Después de abrir el archivo, vamos a imprimir la ruta del archivo. Para eso, voy a escribir condición IP. Si ruta de archivo, entonces si ruta de archivo, luego inserte esta condición IP. Quiero imprimir, imprimir, quiero imprimir la ruta del archivo. Después dentro del rundress dentro de los códigos dobles, tipo Hem, archivo abierto, luego coma superior, luego Adocma quiero imprimir Variable de ruta de archivo. Voy a establecer este archivo. Recuerde, esta función se utiliza para seleccionar solo un archivo. Después de configurar el archivo, si ejecuto este código en mi terminal e intento seleccionar un archivo, como quiero seleccionar un archivo Python punto Pi, así que hago clic en Abrir. Ahora puedes ver mi terminal, imprimo la ruta exacta del archivo desde donde abrimos el archivo. Imprime la ruta exacta del archivo de este archivo como una secuencia. Ahora usando la ruta del archivo, somos capaces de abrir el archivo y para abrirlo, necesitamos crear puntero de archivo y método abierto, etcétera No voy a usar eso en este tutorial. Acabo de intentar mostrarte cómo podemos usar el diálogo de archivos. A continuación, te voy a mostrar cómo podemos abrir varios archivos a la vez, cómo podemos seleccionar varios archivos. Para eso, voy a definir otro botón, botón tiquetado, y nuestro texto de botón está abierto múltiples archivos y mando esta función, abro múltiples archivos, y empaco este botón Después de eso, necesitamos definir esta función. Copo esta función y solo voy a duplicar esa sección. Entonces después de duplicarlo, voy a reemplazar el nombre de la función, abrir archivo, abrir múltiples archivos. En lugar de usar puntos de diálogo de archivo, abrir nombre de archivo, voy a usar nombres finos MEs Este Además, voy a cambiar el título de esta ventana abrir un archivo dos, abrir múltiples archivos. Ahora voy a eliminar esta característica. No lo necesito. Y en lugar de usar un filtro, voy a usar múltiples filtros a la vez. Déjame mostrarte. Entonces Helm define imágenes. Nuestro nivel de filtro son las imágenes, y al mismo tiempo, quiero acceder a la imagen PNG imagen JPG, imagen JPEG. Con eso, si quieres agregar Adobe iSorfle o archivo PSD, sí, Solo para escribir espacio y escribir start.ai en el archivo de Illustrator. Espacio, también si quieres abrir archivo PSD, entonces para escribir star dot PSD, Photoshop documento cinco, y voy a establecer este código. Después de eso, también, voy a cambiar la declaración impresa. Voy a hacer que sea archivos seleccionados, luego ruta de archivo. Pero antes de ejecutar este código, también, voy a cambiar la variable porque duplico este archivo, así que no quiero usar el mismo nombre de variable. No quiero sobrescribirlo. Para eso, quiero usar un nombre de variable separado. Entonces voy a escribir. Voy a hacer que sea archivos de ruta de archivo, este. Voy a establecer este archivo. Además, si los archivos luego imprimen los archivos seleccionados, y va a imprimir un tapu Se va a imprimir una cinta con múltiples rutas de archivo seleccionadas. Déjame mostrarte. Así que establece este archivo si ejecuto este código en mi terminal e intento abrir varios archivos. Ahora puedes ver el resultado. Aquí, como puedes ver, se trata de imágenes seleccionadas, y abre todo tipo de formato de archivo de imagen. No tengo ningún formato de archivo JPEG. Por eso no se muestra. Tenemos el archivo JPG, tenemos el archivo Adobe Illustrator, teníamos el archivo Photoshop y tenemos el archivo PNG, y voy a abrirlo todo a la vez. Si lo abro, como pueden ver en mi terminal, se imprime un Taple cada elemento Taple es una ruta de archivo Aquí está nuestro archivo localizado. Esta es la primera parte de este tutorial. En la misma parte de este tutorial, voy a usar otras dos funciones como preguntar guardar nombre de archivo y preguntar directorio. Se utiliza para guardar el archivo y el siguiente es seleccionar la carpeta. Gracias por ver este video, mantente atento para nuestro próximo estudio. 34. Diálogos de archivos, parte 2: Me alegro de verlos de vuelta, chicos. En este tutorial, vamos a aprender. Pregunte guardar nombre de archivo método y preguntar método de Ditoria. Se utiliza para seleccionar la ubicación para decir archivo Babe, y el siguiente se utiliza para seleccionar una carpeta. Entonces comencemos práctico. Entonces como pueden ver, estamos en mi editor de código is studio. Ahora voy a crear otro botón. Eso va a comandar una función. Guarda el archivo, déjame mostrarte. Entonces, para escribir t botón de punto, y nuestro texto del botón es guardar archivo. Y en nuestro parámetro de comando, llamo a esta función, guardar archivo, y empaco este botón. Y después de eso, necesitamos definir esta función. Diga archivo. Entonces copio el nombre de la función y voy a duplicar esta sección. Al principio, voy a cambiar el nombre de la función. Voy a cambiar abrir múltiples archivos a y reemplazar con guardar archivo. Después de eso, voy a cambiar el nombre de la variable. Voy a hacer que salve a Path. SPAt igual al punto de diálogo de archivo, pregunta guardar método de archivo Encendido para reemplazar preguntar nombres de archivo abiertos o pedir guardar nombre de archivo. Entonces voy a establecer un título. Voy a hacer que sea título igual para guardar como. Después de eso, se puede mencionar la extensión por defecto del archivo seguro. Para ello, utilizamos este parámetro, extensión por defecto igual a punto TXT. Entonces automáticamente, va a establecer el archivo en formato TXT. Además, se puede mencionar en los tipos de archivos. Así que para eliminar estas extensiones de archivo y con todo tipo de archivos, voy a usar archivo TXT. Yo uso esta etiqueta TextFile, y luego uso start dot TXT Después de eso, necesitamos imprimir la ruta elegida después de seleccionar la Ruta. Para eso, necesitamos usar I condición I Seppth I set path is true, entonces quiero imprimir la variable set path También, voy a cambiar el texto de esta declaración impresa. Aquí voy a escribir archivo guardar en Guardar PAT y voy a configurar este archivo. Después de sub este archivo, si ejecuto este código en mi terminal, ahora puedes ver este botón de archivo. Si hago clic en él desde aquí, puede usar la ubicación del archivo en nuestro documento de caso. Además, puede usar tipos FlesVs como Bidifulc TextFils. También puedes elegir todos los archivos y puedes seleccionar tu ubicación para guardar. Después de guardar va a sustituir a éste. Va a sustituir a la nueva. Además, si quieres poner tu propio nombre como cualquier cosa como archivo nuevo, nuevo archivo y elige la extensión de texto, archivo de texto, y luego Paysafe Ahora ya se puede ver una terminal, imprimo la ubicación segura del archivo. Archivo guardar en el exacto esta ubicación con este nuevo nombre de archivo. Recuerda, no crea un archivo real. Es solo crear una ubicación de archivo segura. Ahora, hablemos de nuestra última función. Para eso, voy a definir otro botón aquí tipo pkt botón Voy a colocarlo en una ventana raíz y nuestro texto de botón es seleccionar carpeta, y va a comandar este método, seleccionar DSCOFolder La función seleccionar carpeta va a definir un manejador let a carácter PKD Puedes seleccionar cualquier carpeta usando eso. Definamos la función. Para eso, aquí, voy a escribir nuestra función nombre Dave select folder. Y dentro de la función, voy a escribir la ruta de la carpeta, de lo contrario carpeta. Carpeta igual al archivo de diálogo, archivo de diálogo punto, y aquí vamos a usar ask directorio. Preguntar directorio. Después dentro de las rotondas al principio para proporcionar el título y nuestro nombre de título es título, Amotype seleccione una carpeta. Esto es. Es necesario pasar otros parámetros como extensión de archivo por defecto, tipos de archivo, etcétera, tenemos que elegir la carpeta Si quieres establecer condición, es correcto o no, vamos a vamos a definir una sentencia print usando condición IP. Entonces C I carpeta, si carpeta, entonces dentro de esta condición, luego dentro de esta condición E, voy a imprimir. Él para imprimir dentro de la carpeta redonda seleccionada carpeta, quiero seleccionar la carpeta de ruta de la carpeta y voy a configurar este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal e intento seleccionar una ruta de carpeta, déjame mostrarte, puedes ver el botón, seleccionar carpeta, si hago clic en ella y selecciono una de las carpetas como descargar. Descargas, de lo contrario, se puede seleccionar carpeta de cualquier unidad, si abro esta unidad, tal como seleccionamos la KinterFolder Entonces si hago clic en él, aquí se puede ver la ruta de la carpeta carpeta seleccionada. Esta carpeta está en mi unidad web y el nombre de nuestra carpeta es Kinter Entonces estas son las funciones de diálogo de archivos más comunes, y se puede ver su propósito y lo que escribieron. Así que gracias por ver este video. Estén atentos para nuestro próximo Tutorial. 35. Selector de color: Oigan, chicos, me alegro de volver a verles. Este es el tutorial final relacionado con los cuadros de diálogo, y en este tutorial, vamos a aprender selector de colores El módulo selector de color permite al usuario elegir un color de una paleta Está escrito tanto valores de color RGB como valores de color hexa. Entonces comencemos la práctica y veamos cómo podemos usarla. Entonces como puedes ver, estamos en mi editor de código de estudio Visal, y creamos una ventana básica simple Después establecemos la geometría. 300 por dos hun, aquí vamos a usar selector de colores Entonces necesitamos importar selector de colores. Para eso, necesitamos atar desde Kiner import color chooser. Entonces necesitamos crear un botón que vaya a llamar a una función. Para eso, voy a atar el botón tdt y voy a presionar el botón en una ventana raíz y nuestro botón toma este color de manguera En nuestro parámetro de comando, llamo a esta función chose color. Y ahora necesitamos definir esta función. Entonces aquí, voy a definir la función. Dave elige el color. Luego dentro de esta función, necesitamos abrir el diálogo del selector de color Para eso, voy a definir una variable y nuestro nombre de variable es color. Color igual a desde selector de color, selector de color, yo uno, dos, quiero usar el método llamado ask color. Éste. Entonces dentro de la rotonda aquí, voy a definir un título de título, y voy a escribir Pk color Elige un color. Después de eso, voy a usar condición IP. Como te dije, después de elegir un color, va a devolver valor hexa también valor RGV Aquí voy a decir una condición colorea del color que quiero seleccionar del color, quiero seleccionar Indice uno. Aquí uso el índice uno, y el índice uno significa valor hexa Lo que significa que si hay un valor Xa en esta variable en el índice número uno, entonces dentro de esta condición IP, quiero imprimir dentro los vestidos redondos, voy a escribir. Primero, quiero imprimir los valores RGV en Tipo RGB, dos puntos y voy a imprimir el valor de color RGV Para eso, para acceder al valor de color RGV, apertype el nombre de la variable, necesitamos acceder al número de índice cero Se va a imprimir el valor del color argv. Entonces voy a imprimir la xa. Duplico esta línea. En lugar de usar el color cero, voy a usar el índice número uno, y voy a reemplazar RGV una x Voy a configurar este archivo. Ahora, después de configurar este archivo, si ejecuto este código en mi terminal, déjame mostrarte, tenemos un botón llamado Selotor de color Si hago clic en él, abre el cuadro de diálogo selector de color. Si selecciono algún color como color verde y presiono Bien, ahora puedes ver el color hacer. Este es el sauce AGV de este color y este es el HiXavo Ahora, déjame mostrarte otro ejemplo. Quiero cambiar el color de nuestra ventana. Sea cual sea el color que seleccionemos de este selector de color, quiero aplicarlo en nuestra ventana principal Para eso, voy a escribir root dot config Method, Config En cambio los vestidos redondos, quiero cambiar el dground color tie BG Fondo igual a Dgroun igual a dos, coloqué y quiero aplicar el valor hexa Así que ate el color uno índice número uno. Voy a volver a configurar este archivo. Ahora bien, si vuelvo a ejecutar este código y abro el cuadro de diálogo de color y selecciono cualquier color como este tipo de azul y selecciono y presione Bien, ahora se puede ver en nuestra ventana principal, se refleja con este color, este color azul. Sea cual sea el color que seleccionemos de este selector de color, va a aplicar el color en esta ventana Así es como podemos usar el cuadro de diálogo selector de color. Gracias por ver este video, mantente atento para nuestro próximo tutorial. 36. Barras de herramientas Tkinter Python: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y hoy en este tutorial, vamos a aprender sobre toolbdsolwars Básicamente, una palabra de herramienta es solo un lugar de marco en la parte superior de la ventana que contiene el asistente de botones con iconos. La palabra herramienta no es un objeto, no un objeto diferente. Está hecho con marco. Vamos a crear la barra de herramientas y romper el concepto. Como pueden ver, estamos en mi editor de código de Wizard studio y creo un archivo Python y creo una herramienta Python cinco punto Pi y tenemos una carpeta, carpeta iconos, y dentro de esta carpeta de iconos, tenemos múltiples iconos, como nuevo icono, esta imagen, icono abierto, y icono de Sab Y voy a usar estas imágenes. Estas imágenes son imágenes de muy baja resolución, como 16 por 16 píxeles, lo contrario los cuatro y a los cuatro píxeles. De acuerdo a tus necesidades, puedes asignar cualquier resolución a estas imágenes. Entonces comencemos la práctica. Al principio, voy a crear una barra de herramientas para eso, voy a definir una barra de herramientas variable. Barra de herramientas igual a TKDTFrame. Aquí creamos un objeto frame. Después dentro del receso redondo colocamos el marco en una ventana de raíz, luego usamos borde un relieve Tkot levantado. Este es el tiempo de las fronteras. Ahora, después de crear el marco de la barra de herramientas, también necesitamos empacar esta barra de herramientas. Lo voy a empacar aquí. Algún tipo tool word dot pack, y voy a colocarlo en la parte superior. Quiero llenar esta barra de herramientas en Xxs. Ya conocemos el proceso de cómo podemos colocar un objeto en cualquier lugar y cómo podemos estirarlo. Ahora, después de definir la barra de herramientas, necesitamos cargar las imágenes del icono de las imágenes. Primero, voy a cargar nuevo icono, esta nueva imagen, definir una variable, nuevo icono, igual a AirTypeHirn para escribir tdt Ahora bien, este es un nuevo método para ti. Usando el método photo Image, podemos ingresar imagen en nuestra Ventana y como puedes ver, como parámetro, vamos a proporcionar la ruta del archivo. Entonces desde la carpeta icons, quiero acceder a new dot PNG. Después lo guardo en un nuevo icono variable. la misma manera, voy a ingresar a otra imagen abrir y guardar. Aquí entré a otra imagen, abro el icono y guardo el icono, usando el método de imagen de foto. No te preocupes por eso. En nuestro próximo capítulo, hablaremos de imágenes fotográficas. Una cosa que debes recordar, icono de carga debe ser imagen PNG o de otra manera imagen GIF. A continuación, necesitamos crear los botones, y estoy bien para reemplazar el icono del botón con esta imagen PNG. Entonces al principio, voy a crear el nuevo botón. Así que escribe nuevo botón igual a los botones Tkot. Entonces dentro del brcess redondo voy a colocar el botón dentro del marco de la barra de herramientas Entonces imagen igual a nuevo icono. Ahora asigno nueva imagen de icono a este botón y comando igual a nuevo archivo. Va a comandar esta función, nuevo archivo. No te preocupes. Vamos a crear nuestra nueva función de archivo más adelante. Después de eso, empacamos este botón nuevo. Entonces como puedes ver, cómo definimos un botón variable nuevo y botón igual al botón tick dot. Y pruebo este botón dentro de esta herramienta word frame. Después asignamos imagen. Imagen igual a nuevo icono, la nueva imagen de icono a este botón. Después de eso, comandamos esta función, Nuevo archivo, Don VOD, crearemos la función más adelante y también empacamos este botón, botón punto, paquete, y dentro del proceso de ejecución, y presiono este botón en el lado izquierdo Además, le asigno un poco de relleno a este botón en Xs y YxS. De la misma manera, voy a crear otros dos botones. Simplemente avance rápido el proceso para ahorrarle tiempo. la misma manera, creo Abrir archivo y el botón Guardar archivo. Ahora una a una, voy a definir todas las funciones, archivo nuevo, archivo abierto y archivo seguro. Básicamente, voy a mostrar una masa de información cuando hagamos clic en estos botones. Nada más. Para eso, necesitamos importar cajas de masas. Así que escriba de Kiner Import caja de masas. Después de eso, voy a definir las funciones. Nuestra primera función es Dave New file. Entonces dentro de esta nueva función de archivo, voy a imprimir este mensaje. Quiero imprimir este mensaje informativo. Entonces escribo el cuadro de mensaje punto para Info Method. Entonces como etiqueta como título de esta acción Window HearityPetolb, y como mensaje de información pasamos, De la misma manera, voy a crear otras dos funciones. Entonces aquí, voy a definir otras dos funciones, abrir archivo y guardar archivo. Para archivo abierto, paso este mensaje, archivo abierto, y para Saffle, aquí paso conjunto de archivos. Es este archivo. Upper sep este archivo si ejecutas este código en mi terminal y como puedes ver, Creó, Creó Ta con íconos. Reemplazamos los botones con estos iconos. Si pateo uno de los botones como abrir archivo, ahora puedes verlo mostrar un mensaje, abrir archivo. la misma manera, si hacemos clic en Saffle, mostrar este mensaje, archivo guardado Básicamente en este tutorial, trato de mostrar lo que es la barra de herramientas. La mayoría de los casos usamos barra de herramientas con menús, pero ya te enseño cómo podemos crear menús y cómo podemos crear submenús Entonces esto es todo para este tutorial. Gracias por ver este video. Estén atentos para nuestro próximo Tutorial. 37. Añadir imágenes en Tkinter: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y hoy en este tutorial, me gustaría mostrarte cómo podemos agregar imagen en Kiner Windo usando foto Imagen Para agregar la imagen, vamos a utilizar el método de imagen de foto y solo soporta imagen GIF e imagen PNG. La clase de imagen fotográfica en Tinter te permite mostrar imágenes, pero solo es compatible con el formato PNG y GIF No admito imagen en formato JPG. Veamos un ejemplo de cómo podemos usar esta imagen fotográfica de clase. Ya usé este en mi tutorial anterior, pero este es el tutorial separado para esta imagen fotográfica de clase. Empecemos la práctica. Entonces como pueden ver, estamos en mi editor de código de estudio de resultados. Al principio, voy a importar un módulo y nuestro módulo es Kinder Voy a escribir Import Kiner TK enter como TK. Después de eso, después de eso para crear la ventana raíz. Para eso, voy a escribir root igual a p punto clase T. Además, voy a asignar un título a esta ventana raíz. Ejemplo de imagen de foto de título de raíz. Entonces puedes asignar geometría a esta ventana. Puedes saltarlo si quieres. Entonces voy a escribir root dot main loop. Voy a correr el bucle principal. Aquí vamos a usar la clase de imagen fotográfica para acceder a la imagen. Para eso, necesitamos escribir T dot photo image. Imagen fotográfica. Luego dentro de los vestidos redondeados, es necesario proporcionar la ruta del archivo, de lo contrario, archivo Archivo igual a dentro los códigos dobles y nuestro nombre de archivo de imagen está en archivo, este, esta imagen PNG. Quiero agregar archivo punto PNG. Eso es. Entonces voy a guardar esta imagen en una variable. Para eso, aquí, voy a definir una variable ING, imagen igual a TKTPhotoImage Ahora quiero mostrar esta imagen dentro de una etiqueta. Para eso, voy a definir una etiqueta, etiqueta igual a etiqueta T. Ahí está la rotonda voy a poner la etiqueta en una ventana raíz Después de eso, voy a definir la imagen. Aquí voy a usar opción de imagen. Imagen igual a, voy a pasar la variable de imagen IMG, imagen Voy a poner el archivo. Después de eso, voy a empacar esta etiqueta. Entonces voy a escribir label dot método PAC. Entonces dentro del Rundss quiero agregar algo de relleno en YX, algún tipo, pad, Y, entrando en pixel. Voy a poner esta parte. Ahora bien, si configuro este archivo y ejecuto este código en nuestro terminal, aquí puedes ver la imagen PNG. Como te dije, es compatible con el método de imagen fotográfica solo soporta imagen PNG y GIF. No admito otro formato como GPG, JPEG, etcétera. Ahora bien, si intentas mostrar la imagen JPG, entonces duplico esta línea y comento la línea anterior, y voy a reemplazar esta ruta de archivo con css dot JPG, css dot JPG, y configuro este archivo y ejecutaré este código en nuestra terminal. Ahora puedes ver que es el túnel Aero. Además, una cosa que debes recordar. Siempre, debes mantener una referencia a la imagen. De lo contrario, puede que no se muestre. Quiero decir único para asignarlo en una variable. En nuestro caso, IMG. De lo contrario, no va a funcionar. Este es el primer ejemplo. Aquí, muestro imágenes PNG o JPG. Si deseas usar imágenes de otro formato como JPG, JPEG, BMP, PNG, WEBP, en ese caso, necesitas usar un módulo, módulo llamado PL Déjame mostrarte la demostración. Ahora déjame mostrarte otro método que puedes mostrar otras imágenes de formato usando la biblioteca PAL. Estadísticas PAL para plu. Se utiliza para GPG, PNG, todo tipo de imágenes La imagen fotográfica de Ginters solo admite PNG o GIP. Pero con Pillow, puedes cargar casi todos los formatos, como JPGImage, imagen JPEG, imagen BMP, imagen PNG, imagen TI AFB y WebPImage Entonces déjame mostrarte cómo podemos usarlo. Entonces como puedes ver en mi editor de código visualts studio, aquí creo otro archivo Python, Minto dot pie Al principio, voy a importar el Kintermdule. Voy a escribir Importar inter como DK. Después de eso, voy a abrir mi Windows PowerShell. Como pueden ver aquí abro mi Windows PowerShell y voy a instalar un módulo, y nuestro módulo tiene como objetivo el tipo Pillow, Peep, install, y nuestro nombre de módulo es PLO voy a golpear Enter Después de golpear Enter, como puedes ver, requisito ya satisfecho porque ya me descargo este módulo. Pero si no descargas este módulo, necesitas completar tu proceso de descarga. Ahora volvamos al código. Después de eso, desde el módulo PIL, necesitamos importar imagen e imagen TK. Tipo de suma de PIL, quiero importar imagen e imagen TK. Estas dos clases, imagen TK, eso es todo. Entonces voy a crear un objeto de ventana raíz usando esta clase T. Después de eso, voy a definir un título. Aquí tecleo raíz título almohada imagen ejemplo. Entonces voy a correr el bucle principal. Entonces escribe, raíz, bucle principal. Ahora quiero abrir la imagen JPG, css punto GPG. Para eso, voy a definir una variable y nuestro nombre de variable es image. Imagen igual a aquí, voy a usar clase de imagen, imagen, punto, método abierto. Abierto. Entonces dentro de las rotondas aquí dentro del doble recorrido para pasar, necesitamos pasar el nombre de la imagen, Css punto JPG Después de eso, necesitamos convertir la imagen en imagen compatible con Kiner Para eso, voy a definir otra variable IMG, imagen, imagen qual dos. Voy a utilizar esta clase image TK, image tk dot photo image method. Después dentro de los vestidos de ronda, voy a pasar la variable de imagen Imagen. Después de eso, necesitamos mostrar esta imagen en una etiqueta. Para eso, voy a definir una etiqueta y etiqueta igual a etiqueta de punto T, y pruebo la etiqueta dentro la ventana raíz y aquí imagen, imagen igual a imagen IMG Imagen variable Entonces voy a empacar esta etiqueta. Tipo etiqueta punto PAC Mathod. Después dentro de la rotonda, voy a escribir pad Y 20 pixel. Voy a establecer este archivo. Hasta configurar este archivo, si ejecuto código en mi terminal, aquí puedes ver el resultado. Se puede ver la imagen. Nuestra resolución de imagen GBG es demasiado grande, por eso cubrió el área Para resolver el problema de tamaño, podemos usar otro método. Déjame mostrarte. Voy a cuate el terminal y aquí voy a proporcionar una imagen de dimensión específica a esta variable de imagen Entonces para escribir imagen. Imagen igual a aquí, voy a usar image dot resize method, algun tipo image, dot, resize method, resize method, resize Luego dentro de las rondas, luego dentro de las rondas, necesitamos proporcionar la dimensión de la imagen. Es necesario proporcionar la dimensión dentro de las rondas algún tipo 400 por 400. Es una imagen cuadrada. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes ver el resultado. Se redimensiona la imagen JPG. Básicamente, el módulo Pio extiende capacidad de Cintros al admitir más formatos Puede cambiar el tamaño, recortar, rotar y aplicar filtro en esta imagen Y recuerda, siempre usa el método de imagen de foto de punto mágico para convertir una imagen PIL en un formato intercompatible Esto es para este tutorial. En el siguiente tutorial, te voy a mostrar cómo podemos recortar la imagen, cómo podemos rotar una imagen, también cómo podemos aplicar diferentes filtros, como Guscian, escala de grises, desenfoque, etcétera Estén atentos para nuestro próximo tutorial. 38. Redimensionar, recortar, rotar y filtrar imágenes (almohada + Tkinter): Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro tutorial. Y para hacer este tutorial, vamos a aprender a redimensionar, recortar, rotar y filtrar imágenes con la ayuda de pillow y kid En nuestro tutorial anterior, ya te muestro cómo podemos cambiar el tamaño de las imágenes Para eso utilizamos este método image dot Resize. Entonces necesitas proporcionar ancho y alto. Y si quieres recortar imagen, en ese caso, en tipo image dot crop method. Luego debe proporcionar los lados, el lado del labio, el lado superior, el lado derecho y el lado inferior. la misma manera, si quieres rotar la imagen, entonces necesitas usar el método rotate, y necesitas proporcionar valor en ángulo. Y si quieres aplicar filtros como GrisKL filter, entonces necesitas escribir imagps Y para el filtro de sangre, es necesario escribir filtro de punto de imagen. Aquí es necesario aplicar el filtro de imagen punto BLAD. Así que no te preocupes por ello. Te voy a mostrar todos los ejemplos prácticos. Entonces como puedes ver, estamos en mi editor de código de estudio de usuario y creo un archivo Python main dot pi. Y en nuestro tutorial anterior, ya aprendemos cómo podemos abrir imagen usando la ayuda de la molécula Pillow. Ahora también aprendemos cómo podemos cambiar el tamaño de nuestra imagen. Aquí utilizamos una imagen diferente luz punto JPG. Si ejecuto este código en mi terminal, como pueden ver, esta es la imagen de una luz. Y esta dimensión de imagen es 512 por 512. Ahora voy a cambiar el tamaño de esta imagen. Para eso, voy a definir una variable y nuestra variable es redimensionada, redimensionada, igual a redimensionar igual a Aquí voy a usar el método Image dot redimensionado. Ahí dentro de las prensas redondas, es necesario mencionar la dimensión Ancho y altura. Algunos dijeron Ancho, 300 y Alto 200. Coma 200. Además, proporciono un solo comando con 300 y altura 200. Ahora voy a reemplazar esta variable de imagen con esta variable resignada. Copo el nombre de la variable y reemplazo variable de imagen con redimensionada. Después de ingresar la imagen, cambiamos el tamaño de la imagen. Después pasamos la imagen en esta clase, image ticker dot photo image, y voy a satisfacer. Después de satisfacer, si yo en este código en mi terminal, se puede ver el resultado. Se redimensiona la imagen con 300 y altura 200. Ahora, déjame mostrarte otro ejemplo con crop, cómo puedes recortar una imagen. Yo creo otro archivo Python crop dot pi y abro esta imagen con la ayuda del módulo pillow. Ahora quiero recortar esta imagen, la imagen de luz, la imagen de luz exacta. Para eso, voy a definir un cultivo variable. Recortar igual a, necesitamos usar la función de recorte, algún tipo de recorte de punto de imagen. Luego dentro de las rondas aquí, necesitamos proporcionar los valores, el valor izquierdo, el valor superior, el valor derecho y el valor inferior Entonces para el valor de la izquierda, voy a pasar 50 por el valor superior, voy a pasar 50 de nuevo. Y por el valor correcto, voy a pasar 250. Y para el menor valor, nuevo, voy a pasar 250. Entonces voy a sustituir esta imagen por imagen de recorte. Así que copia recortada variable rip esto con eso. Y voy a poner este archivo. Ahora, después de configurar este archivo, si pudiera ejecutar este código en mi terminal, aquí se puede ver la versión de recorte de esta imagen. Desde el lado izquierdo, iCrof 50 pixel desde la parte superior, iCrof 50 pixel y desde el lado derecho, aquí recorte, 250 pixel y desde abajo, recorte desde la parte inferior Iicrop aquí recorte, 250 pixel y desde abajo, recorte desde la parte inferior Iicrop Y después de recortar esta cantidad de área, obtenemos esta imagen. También, para entender los valores de recorte, voy a pasar un solo en comentario Primero, tenemos que pasar el encendido, luego tenemos que pasar el valor superior, luego a la derecha luego el valor inferior. Ahora, déjame mostrarte otro ejemplo cómo podemos rotar una imagen. Como puedes ver, creamos otro archivo Python rotar punto pi e importo la imagen. Ahora para rotar la imagen, primero, hay que definir una variable y nuestra variable es rotar. Gire igual a aquí necesitamos usar el método de rotación de punto de imagen. Entonces dentro de las rondas es necesario mencionar cuánto rotamos. Quiero rotarlo hasta 60 grados, así paso 60. Y luego en nuestra imagen fotográfica, voy a reemplazar con esa imagen girada. Y voy a poner este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, se puede ver el resultado. Como puede ver, gira la imagen a 60 grados y gira la imagen en sentido antibloqueo Entonces así es como podemos rotar una imagen con el helpop con el método HelPop rotate Ahora déjame mostrarte otro ejemplo. Aquí te voy a mostrar cómo podemos aplicar filtros en la imagen. Para eso, para aplicar el filtro, aquí creamos otro archivo Python filtros punto pi. Ahora, antes de aplicar los filtros con la clase TK de imagen, necesitamos ingresar a otras clases como filtro de imagen. Después de commemotype image filter y image Ops, para difuminar la imagen, utilizamos el método de filtro de imagen, y para convertirla en una imagen grascal, usamos el método Image usamos Ahora vamos a convertir esta imagen en la imagen en escala de grises. Primero, voy a convertirla en imagen en escala de grises. Aquí aquí voy a definir una variable gris, gris igual a, voy a escribir imagen Ops, imagen Ops punto escala de grises Después dentro del receso redondo, voy a pasar la imagen variable de imagen. Entonces voy a sustituir la imagen por imagen gris. A. Ahora después de establecer este archivo, si ejecuto este código en nuestro terminal, aquí puedes ver el resultado. Convierte esta imagen en grisscalimage. Ahora, veamos cómo podemos agregar Bar, cómo podemos aplicar el filtro de desenfoque. Déjame mostrarte. Entonces aquí, voy a escribir otro solo comando, Aplicar filtro de desenfoque, y luego voy a definir un desenfoque variable. Desenfoque igual a aquí, voy a escribir image, dot, filter, Image dot filter dentro de los vestidos redondos, y aquí, voy a llamar a este método, filtro de imagen, filtro imagen, punto, blur. Eso es. Voy a establecer este archivo. Después de eso, después de eso, voy a reemplazar la imagen gris por la imagen borrosa. Así que copia el nombre de la variable y voy a reemplazar el gris con blurd y voy a configurar este archivo Y esta vez si ejecuto este código en mi terminal, aquí puedes ver la imagen borrosa. Así es como puedes aplicar un filtro. Se pueden aplicar múltiples filtros. Tenemos múltiples encuentros de filtro, como desenfoque, contorno, detalle, borde mejorado, borde mejorado más, ambos, borde fino, afilado, liso, tablero liso y mani No te voy a mostrar todo el filtro en este tutorial. Sin desenfoque, voy a aplicar otro filtro, que es condure Entonces voy a duplicar esta sección y nombre aplicar filtro de contorno de contorno aquí voy a sustituir el nombre de la variable de sangre por contitor voy a usar el tiro de CUNTR y voy a sustituir el filtro de sangre por anti Entonces voy a mostrar el filtro de contorno. Voy a establecer este archivo. Además, necesitamos comentar esta línea, lo contrario, la va a sobrescribir. Comento esta línea. Ahora la pregunta es ¿qué filtro de contorno va a hacer? Básicamente, este filtro va a detectar los bordes y delinear los bordes. Entonces después de establecer este archivo, si ejecuto este código en mi terminal, se pueden ver los bordes de este bulve Detecto los bordes y dibujo los contornos. Esto es lo que hace el filtro de contorno. Ahora tenemos múltiples filtros. No voy a aplicarlo todo. Depende de usted experimentar con eso. Debajo del código, proporcionaré todos los nombres de los filtros en un comentario. Aquí te proporciono todos los filtros comunes nombre que puedes usar con el método de filtro de imagen, Desenfoque, detalles de contorno, mejorar el modo de mejora de borde, embosar borde afilar, liso, modo liso, rango de caja cushionl, maiden, filtro mínimo, mínimo Se puede aplicar uno por uno, todo ello en esta imagen. No voy a mostrarte todo eso. Recuerda, estos son el filtro del módulo de almohada, no del Kintro Sin módulo Pillow, no puedes aplicar este filtro, y debes recordarlo. Esto es para este tutorial. Gracias por ver este video. Estén atentos para nuestros próximos tutoriales. 39. Uso del módulo ttk: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y a en este tutorial, los vamos a aprender a los asistentes con Ahora bien, ¿qué es TDK? ¿Qué es el mago TTIK? El módulo Kind TTK proporciona un asistente moderno de aspecto nativo con capacidades de tematización. A diferencia de los asistentes clásicos de Tinter, los asistentes TTK son más consistentes con el aspecto de la plataforma y se pueden personalizar usando estilos y temas TTK son más consistentes con el aspecto de la plataforma y se pueden personalizar usando estilos y temas. Ahora, en lugar de usar el módulo TK, vamos a usar el módulo TTK Vamos a aprender cómo podemos usar el módulo TTK, asistente de estilo con estilo TTK Además, vamos a aprender sobre temas personalizados. Y por fin, me gustaría darles un ejemplo de TTKmdu Vamos a construir un tema personalizado para un mini en. En este tutorial, nos vamos a centrar en el uso del módulo TTk Al principio, necesitamos entender qué es la luna TTC. El módulo TTC es una extensión de inter que proporcionan asistentes de aspecto moderno, que adoptan el tema de los sistemas operativos A diferencia de los clásicos asistentes de hinter como la entrada de etiquetas de botones, sus contrapartes TTK como TTK Button, TTKLabel TTKEntry usan automáticamente el estilo TTKLabel TTKEntry como la entrada de etiquetas de botones, sus contrapartes TTK como TTK Button, TTKLabel TTKEntry usan automáticamente el estilo consistente del sistema. Se le puede llamar más versión de actualización y actualización del módulo TTK Ahora comencemos con prácticas y veamos cómo podemos usar los asistentes TTKule básicos de TTKule Como pueden ver, estamos en mi código de estudio Wiz Eater, y creo una ventana Kiner simple básica Aquí hay una geometría 300 por 200. Ahora, al principio, necesitamos importar el módulo TDK. Entonces aquí, voy a escribir desde Kiner, voy a importar TTK Después de eso, voy a crear una etiqueta TDK. Quiero decir que vamos a crear una etiqueta pero no usando el módulo T. Vamos a usar TT mood. Quiero decir que necesitamos crear una etiqueta, pero no voy a usar ninguna clase de TK. Vamos a usar TTCAS. Entonces aquí, creo un nivel variable igual a en vez de usar TK, aquí uso TK, tt Label y lo ponemos en una raíz. Entonces nuestro texto de etiqueta es entrar Uni. Básicamente en este tutorial, voy a crear múltiples asistentes TTk Entonces voy a empacar esta etiqueta, pack puntos nivelados, y proporciono algo de relleno en dirección YX Después de eso, voy a crear campo de entrada módulo TK usando TTKClass Para eso, voy a definir una entrada variable y entrada igual a T tt entrada de punto, y ponemos este campo de entrada en nuestra ventana raíz luego empaco este campo de entrada. la misma manera, de la misma manera, voy a crear un botón de enviar. Defino un botón variable, botón igual al botón TK, y lo pongo en una ventana raíz y nuestro texto de botón es enviar. Además, voy a crear otros asistentes usando TTKClass y nuestro nombre de asistente Aquí voy a escribir combo, combo igual dos, voy a escribir T dot Combo Box. Después dentro de las rotondas la voy a colocar en una ventana raíz Y voy a pasar los valores. Entonces dentro del cuadrado s aquí, necesitamos definir todos los valores de combox Básicamente, necesitamos crear una lista de valores de cuadro combinado, y como valores, voy a pasar el nombre de los lenguajes de programación, Python, Java, C plus plus y JavaScript. Después de eso, necesitamos empacar el tipo de cuadro combinado tipo combo dot PAC Method. Voy a añadir un poco de relleno en xs, cinco FixelPadn. Entonces voy a configurar este archivo. Aquí utilizo múltiples asistentes. Ahora después de configurar este archivo y ejecutar este código en mi terminal, es como se ven nuestros asistentes TTK Se ve profesional y moderno. Si usas eso, entonces mismo código Python gps que del azul nativo específico. Quiero decir, si eres dueño de Windows, entonces los botones se ven como botón de Windows. Y si eres dueño de MC Ws, entonces se ven como botones de Mac. Por eso preferimos TK más que Tiki. Entonces este es el primer tutorial sobre eso. En la siguiente parte de este tutorial, vamos a darle estilo a los asistentes usando métodos de estilo ttkdt Así que gracias por ver este video, mantente atento para nuestro próximo tutorial. 40. Cómo diseñar widgets con ttk: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro asistente de equipo relacionado con el tutorial. Hoy en este tutorial, vamos a aprender sobre el método de estilo ttkt Ahora, ¿qué es eso? La clase de estilo Tt controla cómo se ven los asistentes. Con él, se puede personalizar la fuente, el color, el borde, el relleno, e incluso cómo se comportan los asistentes en diferentes estados como HoberPrest Es bastante similar con el estilo CSS. Al principio, necesitas crear un objeto de estilo. Y en nuestro paso dos, necesitamos configurar un estilo de asistente. Cada asistente T tiene un nombre de estilo predeterminado. Ejemplos para botón, necesitamos escribir botón T, para etiqueta, necesitamos escribir etiqueta T, para entrada para escribir entrada T, y para marco, necesitamos escribir marco T. En el paso tres, puedes crear un estilo de nombre personalizado. En lugar de modificar el estilo global, puedes crear el tuyo propio en el paso cuatro, vamos a darle estilo con la función de mapa de puntos. Aquí, de acuerdo al estado múltiple, podemos diseñar nuestro asistente como active pressed desactivar el foco. Entonces comencemos la práctica y veamos cómo podemos aplicar el método Ttktyle Entonces como pueden ver, estamos en mi codeditor de sal studio y aquí creo un sencillo básico inter Window, y además importo tClass Al principio, necesitamos crear un objeto de estilo. Para eso, aquí, voy a definir un estilo variable, estilo igual al estilo Ttkdt Entonces, usando la clase de estilo, definimos un objeto. Después de eso, tenemos que elegir un tema. Para eso, voy a escribir style, style dot, Time style dot así. Estilo de punto Tuss dentro de los vestidos redondos. Dentro del curso R, voy a escribir CL AM. Aquí utilizamos almeja Time para este tipo. A continuación, voy a definir un botón en la Ventana para escribir BTN o variable n equival a, y vamos a definir el botón usando TT glassy TK, Entonces dentro de los vestidos redondos, voy a colocarlo dentro de la raíz de la ventana raíz y nuestro texto de botón es texto igual a dentro de los códigos dobles dentro de los códigos dobles. Aquí pasaría botón de estilo. También quiero aplicar este estilo. Para ello, necesitamos usar el parámetro style, de lo contrario, style attribute. Después dentro de los códigos individuales, aquí voy a aplicar mi botón DoTT Este estilo, quiero aplicar este estilo. Ahora necesitamos definir ese estilo. Básicamente, aquí definimos un estilo de nombre personalizado. Lo nombramos botón punto P. Si no definimos un estilo personalizado para este botón, entonces va a aplicar el mismo estilo a los otros botones. Es bastante similar con clase. Aquí definimos una clase particular a este botón. A continuación, tenemos que empacar este botón. Para eso, voy a atar tn button dot pack Mathog. Después dentro de las redondeadas voy a agregar algo de padding en YxSpad Y, y y Después de eso, necesitamos configurar este botón. Quiero decir estilo el botón. Entonces aquí, voy a definir un solo botón de estilo de comando. Entonces por debajo de eso, necesitamos escribir style style dot configure Method. Configurar. Después dentro de los vestidos redondos, voy a pasar el nombre del botón, que es mi botón Copio el nombre del botón y dentro de los códigos simples, dentro de los códigos dobles, voy a pasar el nombre del botón. Acoma entonces necesitamos usar las propiedades como font, font, font igual a, aquí quiero aplicar Aerial font En cambio la doble capa, voy a marcar marcar. Después de eso, voy a definir el tamaño de fuente y quiero usar 12 píxeles. Entonces voy a proporcionar el peso de la fuente, que está en negrita. la misma manera, voy a aplicar encontrado color, encontrado blanco. Entonces entonces quiero aplicar, fondo negro. Después de eso, voy a agregar algo de padding, padding, padding igual a, y voy a agregar padding desde toda la dirección. Entonces de toda la dirección, utilizo diez píxeles. Y entre los valores, hay que proporcionar un coma, de lo contrario, va a lanzar un do. Después de configurar este archivo, si ejecuto este código en mi terminal, es como se ve nuestro botón de estilo. Ahora puedes ver el color predefinido significa que el color de la fuente es blanco y el color de fondo es Si lo hago azul, si quiero hacerlo azul, y ellos configuran este archivo y vuelven ejecutar este código, se puede ver el resultado Ahora hablemos de estado, cómo podemos aplicar estado usando el método de mapa de puntos. Como cuando nuestro botón está activo, quiero decir cuando ella mi color en este botón, quiero decir cuando está en estado activo, entonces quiero cambiar las propiedades como color de fondo y color de primer plano. Déjame mostrarte cómo podemos usar el método de mapa. Para eso, voy a usar el método map, pero antes voy a definir un solo comando, y voy a escribir usando el método de mapa de puntos. Debería ser pequeña. Ahora su método de mapa de puntos de estilo tipo. Mapa. Luego dentro de las rondas al principio queremos apuntar al botón particular usando su estilo nm personalizado Dentro del doble curso voy a pasar mi botón. Ahora para seleccionar ese botón. Quiero cambiar el color de la fuente. Cuando coloco mis autos sobre este botón, lo contrario, presione el botón Para eso, para eso primero, voy a conseguir por colores propios voy a empatar por tierra. Primer plano igual a, y aquí tenemos que pasar una lista. Entonces dentro de esta plaza dice cuando nuestro botón es alabado, algún tipo PRDs ED elogió, entonces quiero cambiar el color de este teléfono Quiero que sea amarilla. Y voy a poner este archivo. Después configuré este archivo, si ejecuto este código en mi terminal y cuando presiono el botón, ahora puedes ver nuestro botón cambiar de color a amarillo color blanco a amarillo. A continuación, quiero cambiar el color de fondo. Después del coma, voy a seleccionar el fondo. Fondo igual a dentro de la base cuadrada, dentro de la base cuadrada, si se presiona nuestro botón, entonces copio esta declaración y si se presiona nuestro botón, quiero cambiar el color de este fondo, quiero que sea rojo ROJO rojo y voy a subs pi Ahora aquí, cambia el color de primer plano y el color de fondo, donde presionamos el botón Entonces después del archivo Sypris, si ejecuto mi código en mi terminal y hago clic en este botón, ahora puedes ver nuestro color de fondo se vuelve rojo y el color divertido se vuelve amarillo A continuación, cuando Yo Ella mi color en este botón, quiero cambiar el color de fondo. Quiero que sea rosa. Para eso, para eso, en nuestra sección de antecedentes después del coma, voy a usar otro estado de estilo, que está activo. Entonces dentro de la ronda versus dentro de los códigos dobles, voy a pasar, voy a escribir activo. Activa cuando nuestro botón está activo, entonces quiero cambiar el color de fondo y nuestro color de fondo es rosa, y voy a configurar este archivo. Después de configurar este archivo, se ejecuta este código en mi terminal, y cuando berm color en este botón, se puede ver el resultado Ahora se ha vuelto de color rosa. Si quieres que sea verde, sí, solo puedes reemplazar el rosa por el verde y establecer el archivo. Si alquilo mi código y ber mi color en este botón, se puede ver el resultado. Ahora se vuelve verde. Entonces así es como podemos aplicar el estado de estilo con metop. Espero que ahora el concepto sea claro fody. Entonces en este tutorial, aprendemos cómo podemos diseñar magos con estilo tt Mathup Espero que ahora el concepto sea ClearFodi. Gracias por ver esta declaración en video para nuestro próximo tutorial. 41. Temas personalizados en ttk: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial. Hoy en este tutorial, voy a hablar de temas personalizados, temas personalizados en TTK La clase de estilo TTK le permite administrar estilo del asistente y cambiar entre temas integrados o personalizados Tema disponible puedes seleccionar win native, almeja, t default classic Vista, expinative, et cetera Estos son los temas disponibles que puedes seleccionar. Ya usamos un tema en nuestro tutorial anterior, que es almeja Puedes usar Vista también, clásico también, lo que quieras usar. Además, puedes crear tu propio tema cantando y modificando el tema existente Estudiemos prácticas y tratemos de entender de lo que estoy hablando. Como pueden ver, estamos en mi editor de código visual studio, y aquí abrí mi anterior Python cinco. Aquí aprendemos cómo podemos usar el método map y cómo aplicar estilo a los botones y cómo configurar los asistentes Ahora puedes notar cómo aplicamos un tema reclamado. Si configuro este archivo y ejecuto este código en mi terminal, ahora, después de aplicar este tema, es como se veía. Así es como se ve nuestro botón. Pero si cambio el tema, déjame mostrarte si lo hago Vista algún tipo VIS TA, luego configuro este archivo y ejecuto este código en mi terminal. Ahora puedes ver el resultado diferente. Después de aplicar el tema, es cambiar el botón según el, según el estilo del tema. la misma manera, si quieres aplicar otro como clásico, en vez de usarlo, voy a aplicar Classic. Luego establece este archivo y vuelve a ejecutar este código. Ahora puedes ver un resultado un poco diferente para este botón. Así es como se ve después de aplicar el botón clásico. Todo se trata de tema. Pero en este tutorial, trato de mostrarte cómo podemos crear nuestro propio, nuestro propio tema personalizado. Para eso, voy a definir otro archivo Python y nuestro nombre final es el tema de subrayado personalizado punto Pi Al principio, voy a importar los módulos necesarios, TK y TK. Después de eso, después de eso, voy a crear la ventana raíz usando la clase TK. Además, le asigno un ejemplo de tema personalizado de título. Entonces entonces ejecuto el bucle principal, el bucle principal del punto raíz. Después de eso, después de eso, necesitamos definir el objeto de estilo usando la clase TT. Así tipo de estilo igual a la clase de estilo Tt, y ahora el estilo se convierte en un objeto, que es creado por la clase de estilo. Ahora voy a crear algunos quizards. Básicamente, quiero crear un inicio de sesión desde. Inicio de sesión temático personalizado desde. Y para crear el inicio de sesión, necesitamos tomar una etiqueta. Entonces escribo label, etiqueta TT porque Hero usó clase TD para esa etiqueta tt dot, y la colocamos en una ventana raíz y nuestro texto de etiqueta es nombre de usuario. Empaque esta etiqueta con YxSpaddy. A continuación, voy a tomar una sensación de entrada. Entonces voy a escribir tt dot entry y pongo esta entrada fiield en una ventana raíz, entonces voy a empacar esta Después de eso, necesitamos definir otra etiqueta para contraseña. Necesitamos definir otra etiqueta y otra entrada. Nuestra siguiente etiqueta es contraseña y creo una entrada para esta contraseña, y en nuestro campo de entrada para la contraseña, en lugar de mostrar los personajes, aquí muestro las estrellas. Sea cual sea el personaje que pasemos en este enterfield lo va a exhibir como un signo de estrella Entonces necesitamos crear un botón de inicio de sesión. Para eso, voy a tomar un botón tt punto botón y voy a colocarlo en una ventana raíz y nuestro texto de botón es login. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, es como se ven el botón de inicio de sesión y la contraseña. Ahora voy a crear un tema personalizado y voy a aplicar este tema personalizado a estos botones. No sólo los botones, voy a aplicarlo en una entrada de etiqueta también. Después de definir este objeto de estilo, voy a escribir un solo comando, crear tema personalizado. Aquí, para crear el tema personalizado, necesitamos escribir style Object tat necesitamos usar este tema de clase crear. Dentro de los vestidos redondos, al principio, necesitamos proporcionar themme personalizados Dentro del código doble, voy a pasar mis ellos coma superior superior, luego a continuación tenemos que pasar el temme padre Escriba parent y para el tema padre, voy a escribir Clem También necesitamos definir los ajustes de configuración, y esta es la principal. Dentro de la configuración, voy a proporcionar un diccionario. Básicamente, aquí vamos a modificar el tema existente, que es claim en nuestro propio tema personalizado, que se basa en el tema claim, primero, voy a darle estilo a los botones. Para eso, dentro del diccionario de configuración, nuestra primera clave es el botón T. Dentro del doble curso, voy a teclear botón T, luego dos puntos. Entonces dentro de la surge, luego dentro de la liss aquí, voy a configurar Es un curso Db o tipo, configurar, luego dentro de los dos puntos, voy a crear otro diccionario. Aquí puedes ver dentro del diccionario de configuración, tenemos valor tibetano. Es un ítem de diccionario. Y dentro de este diccionario tibetano, aquí creamos otro diccionario, el cual está configurado. Ahora voy a configurar las propiedades, como primer plano Ahora dentro del doble curso, voy a escribir cuatro crecidos blancos. Después de eso, voy a definir el fondo para el fondo, utilizo este color. Entonces voy a definir la fuente para la fuente, HertyFont Aerial, 12 pixel y Entonces después de configurar el botón T con estas propiedades, quiero cambiar, quiero cambiar el color de fondo cada vez que active este botón. Además, quiero cambiar el color de fondo cada vez que presione el botón. Para eso, dentro de este diccionario tibetano, aquí, voy a tomar otro ítem, que es matemática. Después dentro de la resa Cali luego dentro de los cálices, quiero cambiar el fondo Quiero cambiar el fondo cuando actué este botón. Cuando actué el botón T, quiero cambiarlo a este color y donde presiono el botón, también quiero cambiarlo a este color. A también es necesario proporcionar una coma entre estos dos v porque estos son todos valor del diccionario, configurado y mapeado Entonces coma, voy a pasar este mapa de valores. Ahora dentro del diccionario de configuración, tenemos la tecla del botón T. Entonces si activamos la tecla del botón T, se va a mover a los otros dos diccionario, configurado y mapear. En nuestra sección configurada, configuramos el color de primer plano, color de fondo, fuente, etcétera, en nuestra sección de mapa, simplemente cambiamos el color fuente, etcétera, en nuestra sección de mapa, simplemente cambiamos el W el botón está activo y cuando se presiona el botón. Esto es para los botones, y usamos estilo T, por eso necesitamos teclear botones T. A continuación, después de la coma, de la misma manera, necesitamos darle estilo a las etiquetas, etiquetas T Entonces luego dentro del ali versus aquí, voy a configurar para color marrón para la etiqueta azul y también voy a cambiar el color de fuente. Harrow es fuente Helica, y hacemos su tamaño de fuente 12 Después después del coma, voy a darle estilo al campo de entrada. Oír configuró este campo de entrada. Para eso escribir nuestra entrada clave T y configurarla y agregar un poco de relleno relleno de cinco píxeles. Voy a establecer este archivo. Así es como podemos crear nuestro tema personalizado. Y nuestro nombre del tema es mi tema. Si ejecuto este código en mi terminal, puedes ver cualquier cambio. No va a pasar nada porque solo creamos el tema, no aplicamos el tema. Ahora necesitamos aplicar el tema en esta ventana. Para eso, necesitamos usar una matemática. Aquí, necesitamos escribir style dot theme use. Entonces dentro del latón redondo, dentro de los códigos dobles, esta vez voy a usar nuestros propios personalizados ellos, mi tema. Eso es. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, aquí puedes ver el resultado. Aquí puedes ver si aplicamos con éxito nuestro propio tema personalizado. Básicamente, personalizamos nuestro tema existente, tema limpio. Personalizamos este tema y cambiamos por color redondo color de fondo para el botón, también para la etiqueta Te, también para la entrada. Para la entrada, solo para agregar un poco de relleno. Por eso se ve mucho más grande que el anterior. Espero que ahora el concepto sea claro para ti, cómo podemos crear nuestro propio tema personalizado y cómo podemos aplicar múltiples temas predefinidos como native, claim o default, etcétera Esto es para este tutorial. Gracias por ver este video, Estén atentos para el siguiente tutorial. 42. Cómo crear aplicaciones de GUI utilizando clases: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo tutorial, y hoy en este tutorial, vamos a comenzar un nuevo capítulo. Vamos a aplicar programación orientada a objetos en Kinter. Todos conocemos la importancia de programación orientada a objetos en nuestro proyecto. Hace que nuestro código sea más limpio. Hago que nuestra aplicación sea escalable, también reutilizable. En esta sección, vamos a crear aplicaciones GI usando clases. En lugar de escribir todo en un estilo procesal, puedes estructurar tu GI dentro de una clase. Esto hace que tu código sea modular y reutilizable. Y en la siguiente parte de este tutorial, vamos a aprender estructura de aplicación más grande. Para aplicaciones más grandes, puede crear marcos como clases separadas y luego cambiar entre ellas como páginas. Después de eso, vamos a hablar de herencia. Herencia con reutilización de asistente. Puede crear asistentes personalizados por herencia de asistentes de kinder Paso a paso, te guiaré todos estos. Recorriendo este tutorial, vamos a hablar sobre cómo podemos crear aplicaciones GI usando clases en Kiner Si no tienes ningún conocimiento sobre programación orientada a objetos, puedes consultar mi sección anterior. Es opcional, pero en esa sección, cubro todo sobre programación orientada a objetos en Python. Y si ya tienes conocimientos sobre programación orientada a objetos, entonces puedes comenzar con esta conferencia. Este suele ser el primer paso cuando se enseña orientado a objetos con Kiner porque ayuda a los estudiantes a pasar del código de estilo procesal al código de estructura basado en clase Ahora y clases en Kiner. Es mantener nuestro código organizado, facilita la reutilización del asistente y la lógica, adecuado para aplicaciones más grandes, adecuado para aplicaciones más grandes, permite que los métodos de manejo de eventos permanezcan dentro de la clase. Si hablas del beneficio sobre el estilo procesal, es darte un código más limpio. Una lógica está dentro de una clase. Además, es escalable. Fácil de agregar tanto asistente como métodos. Además, es reutilizable. Puede extender la clase para la nueva entidad. Entonces, sin perder el tiempo, comencemos la práctica y veamos cómo podemos usarla, cómo podemos usar las clases en nuestro proyecto. Como pueden ver, estamos en mi coordinador de so studio y yo creativo Python file main dot pi. Al principio, al principio, voy a importar nuestro módulo Kiner Así ruta, Importar Kiner como T. Después de eso, voy a definir una clase y la clase heredar de la clase TK Así te class, y nuestro nombre de clase es mi app, Mapp y esta clase Maya en altura con clase T, algún tipo t punto PK y dentro de esta clase por ahora, voy a escribir pass Después de eso, después de eso aquí, voy a llamar a if name equal to equal to main function. Tipo I guión bajo nombre guión bajo guión bajo guión bajo igual a igual a dentro de los códigos dobles subrayado subrayado función principal, Mince undercoe a igual a dentro de los códigos dobles subrayado subrayado función principal, Mince undercoe guión bajo nombre guión bajo guión bajo guión bajo igual a igual a dentro de los códigos dobles subrayado subrayado función principal, Mince undercoe. Entonces dentro de esta función aquí, voy a crear un objeto. El objeto que usa esta clase de mi aplicación. Aquí estoy tipo A igual a M A. Estamos creando este objeto usando esta clase, mi app. Entonces voy a correr el bucle principal. Así que escribe en bucle principal para crear la ventana. Ahora tu primera pregunta, ¿por qué uso si nombre es igual a tequs para significar, este método, por qué uso esta condición Si nombre es igual a tequos para mí. Porque aquí estamos ejecutando el archivo directamente. No importamos el archivo de otro archivo u otro módulo. Por eso necesitamos usar un nombre igual igual a igual a función principal y es importante. Este bloque de código le permite escribir módulos reutilizables al tiempo que permite que el crept ejecute los suyos propios ¿Y ahora qué? Si ejecuto este código, ejecuto este código, va a crear un inter wind básico. Déjame mostrarte. Entonces, para ejecutar este código, como puedes ver, crea un inter viento básico. Ahora, volvamos a la clase. La clase Maya en estatura con clase T. Ahora dentro de esta clase clase Maya, al principio, necesitamos crear un constructor. Así propina Dave no Se underscoe underscoe es constructor innit y dentro las rondas Pasó propiedad de auto SL significa objeto en sí. Quiero decir la propia app. Eso ya lo sabemos. Ahora puedes notar que esta clase es directa a la clase TK, es heredar de la clase TK y la propia Tclass tiene su propio constructor innit, y aquí anulamos Ahora no podemos usar propiedades de TClass como variables, variable de instancia TKlass, variable de clase, etcétera Para resolver el problema aquí dentro del constructor init, necesitamos crear un constructor superstruct super Voy a escribir super luego en und brass, luego tipo dot underscoe underscoe Si hacemos eso, ahora podemos usar variables Tclass, como variable de instancia, variable de clase, lo que sea, y otras funciones y métodos Entonces aquí, voy a definir un título para definir el título a esta aplicación, esta ventana, necesitamos usar autoceldas, dark, método title, y dentro de los versos redondos, dentro de los códigos dobles, voy a escribir aquí voy a escribir programación orientada a objetos inter ejemplo. Ahora voy a configurar este archivo y ejecutar este código en mi terminal. Ahora puedes verlo agregar con éxito un título a esta ventana. Ejemplo inter orientado a objetos, pero ¿qué? Si comento este superconstructor, y luego configuro este archivo nuevamente e intento ejecutar este archivo, déjame mostrarte Es a través de una flecha porque como te dije, cuando creo el constructor ing, anulas la app. Anulo el constructor de clase padre, y esta aplicación está hecha con la clase TK. Para usarlo, necesitamos usar superit constructor. Ahora, de nuevo, podemos usar todas las propiedades de TClass y hay que entenderlo En nuestro ejemplo anterior, usamos los nombres de objeto como root. Pero en ese caso, si usamos class dentro de la clase, usaremos el conjunto. Entonces de la misma manera, voy a definir la geometría. Entonces escribe geometría de punto auto, 300 por 200. Después de eso, después de establecer la geometría, voy a crear voy a crear un asistente. Voy a crear una etiqueta. Así atar etiqueta de punto auto, T igual a p etiqueta de punto. Entonces quiero colocarlo en una ventana de auto. Seres significan en nuestro caso, la app. Entonces configuro el texto para esta etiqueta, hola Kinder con OPP Object programa alquilado y uso fuente, fuente aérea y nuestro tamaño de fuente es de 12 pixel Entonces necesitamos, entonces tenemos que empacar esta etiqueta. Etiqueta de auto punto etiqueta de punto dentro de la carrera Brass Paty diez píxeles Voy a fijar esta. Ahora voy a definir un botón. Así que escribo SL Gut botón igual a t botón de punto, y lo metemos en una ventana auto. Y nuestro texto de botón es click me. Y como se puede ver, su parámetro de comando de uso. Pero puedes notar para llamar a la función, nosotros usamos auto cada vez que necesites usar SL. Si creas variables, de lo contrario, cualquier función, de lo contrario llamar a cualquier función, necesitas llamar a St porque estamos dentro de clase y ella usa un constructor. Constructor de TI. comando igual al método SelbdToClick A continuación, voy a empacar este botón. Para eso, nuevamente, necesitamos escribir el método de paquete de punto de botón de punto de limo Después de eso, necesitamos manejar esta función para este botón, y aquí voy a manejar el botón dentro de esta clase. Entonces para eso, no voy a usar ningún comando profundo. Solo quiero escribir en subrayado, haga clic en haga clic igual a aquí Dentro de los tirantes redondos, tenemos que pasar el auto ker auto Entonces dentro del método onclic, aquí, quiero configurarlo Quiero configurar esta etiqueta. Así que voy a escribir self label dot config method. Config. Dentro de las llaves redondas, texto, texto igual a dentro del doble código, voy a teclear botón, hacer clic, pasarlo Uy. Necesitamos crearlo fuera de la etiqueta de sangría, fuera del constructor it. Entonces corté esa porción y me muevo al exterior la etiqueta de sangría del constructor innit De lo contrario, no va a funcionar, que está dentro de la clase, sino fuera del constructor innit. P configuró este archivo. Yo ejecuto este código en mi terminal, aquí se puede ver nuestra etiqueta hola kinter con programación orientada a objetos y tenemos el botón, haga clic en mí Si presiono el botón, puedes ver clic en el botón. Nuestra función funciona perfectamente. Solo una cosa que necesitas recordar todos los elementos de la GUI, como el botón de etiqueta, se inicializan cuando se crea la clase Todos estos inicializan con self object. Estos autoobjetos significan la propia aplicación. El cual es hecho por mi app. Entonces este es el primer ejemplo con programación orientada a objetos, donde te enseño cómo podemos usar clases para crear una aplicación GI. Espero que ahora te quede claro. En el siguiente tutorial, vamos a estructurar una aplicación más grande. Para aplicaciones más grandes, puede crear marcos como clase separada y también barrearlos entre páginas Entonces esto es para este tutorial. Gracias por ver este video, estén atentos para nuestro próximo tutorial. 43. Estructuración de aplicaciones más grandes: Oigan, chicos, es bueno volver a verles. Una vez más, estoy de vuelta con un nuevo tutorial hoy en este tutorial, aprendemos cómo podemos estructurar aplicación más grande con la ayuda de clases. Para BigaAPS puede crear marcos como clases separadas y luego cambiar entre ellos como páginas. Básicamente, cuando tu app crezca, mantén todo en un archivo o una clase se vuelve desordenada Una buena práctica es usar marcos como páginas individuales y luego cambiar entre ellos dentro de una ventana principal de la aplicación. Así que comencemos la práctica y construyamos una aplicación Kinter de varias páginas Como pueden ver, estamos en mi editor de código de estudio Visa, y ya creo un archivo Python main dot Pi. Al principio, voy a ingresar a Kintermdule. Entonces aquí voy a escribir entintador de entrada como TK. A continuación, voy a definir una clase. Aquí voy a escribir clase clase y nuestro nombre de clase es principal A esta clase, la clase principal de la aplicación hereda a través de esta clase TK clase TK es la clase padre de la clase principal de aplicaciones, y dentro de ella por ahora, voy a escribir pass. Después de eso, vamos a establecer esta condición si nombre igual a igual a mí. Porque la usamos para asegurarnos de que tu app se ejecute solo cuando el archivo se ejecuta directamente, no cuando se importa en otro lugar. Después de eso, dentro de esta condición, voy a crear un objeto, objeto usando esta clase. Entonces, para escribir app igual a app principal. Aquí creamos el objeto app usando la clase app principal. Después de eso, voy a correr el bucle principal. Entonces, para escribir app dot main loop. Se va a crear una ventana básica, ventana inter básica. Ya nos enteramos de eso en nuestro tutorial anterior. Ahora, volvamos a la aplicación principal y vamos a crear el constructor. Aquí creo el constructor, Dave, dsc undersco int Aquí, como saben, necesitamos pasar el Lt como parámetro. Entonces tenemos que hacerlo superstrucor, constructor super innit , tipo super Round sus uncoe underscoe Init constructor, undersco underscoeRound ***. En nuestro tutorial anterior, explico por qué necesitamos usar superconstructor Como puede ver, nuestra clase está en cabeza por clase T y la clase T en sí tiene constructor innit También en nuestra app principal, tenemos constructor innit Aquí anulamos el constructor, pero necesitamos usar nuestro método constructor de clase padre funciones variables etcétera Si no lo usamos, no podemos usar las propiedades y métodos del constructor de clase padre. Por eso necesitamos usar super constructor innit. Este súper método. Después de eso, después de eso, voy a configurarlo título para que escriba self dot title multipage inter app Entonces voy a establecer la geometría. Aquí voy a escribir geometría auto punto dentro de la ronda versus 400 por 250 píxeles. A continuación, voy a crear continer cuatro páginas. Aquí voy a escribir continer igual a t dot frame, continuer igual al tdt frame method, y lo ponemos dentro de la Yo en el objeto, el objeto mismo, en esta variable. Después de eso, voy a empacar este contenedor. Entonces escribo continente dot pack y configuro llenar ambos y expandir True. Voy a sub este archivo. Básicamente, creamos un marco vacío principal y dentro de este marco marco principal app, aquí vamos a poner otras dos páginas. Para eso, voy a usar clases para crear las páginas. Aquí voy a escribir comando único, página uno. Ahora vamos a crear la página uno. Voy a definir una clase, y el nombre de nuestra clase es la página uno. Clase página uno. Luego dentro del vestido redondo como una clase padre, usamos la clase de marco T de tiempo La clase de página uno se sumerge a través de tick Dot Frame Glass. Está en hit from tk dot frame, lo que significa que la página uno es un tipo de asistente de marco en kin, como saben, un marco es como un contenedor que puede contener otros asistentes, como etiqueta, botones, etcétera Luego dentro de esta clase, necesitamos definir el constructor init Entonces tecleé d en él. Dentro del latón redondo, necesitamos pasar el parámetro de celda y otras dos variables, como estas son todas variables de clase como padre y controlador. Aquí, los padres representan el contenedor, generalmente un marco o ventana de muster Donde se colocará este marco y la variable del controlador es una referencia a la clase de aplicación principal. Puede llamar a métodos como mostrar marcos y otros métodos. Entonces dentro de este constructor, voy a usar este super libro de matemáticas, super constructor innit, y aquí pasamos la patente Como saben, ahora podemos acceder al constructor de la clase de patente, T frame. A continuación, voy a crear un asistente de etiquetas dentro de este marco. Yo creo una etiqueta igual a la etiqueta t, y la ponemos en un cel Selfo Window, y luego el texto igual a esta es la página uno, y el tamaño de fuente es 14 y nuestro estilo de fuente es aéreo Después de eso, después de eso, necesitamos empacar esta etiqueta. A continuación creo un botón, botón igual al botón ticketed, yo y lo coloco en una ventana auto y nuestro texto de botón es ir a la página dos Entonces etiqueto este botón. Como puede ver, no utilizamos ningún parámetro de comando para este botón. vamos a usar más tarde. Esta es nuestra página uno. Ahora de la misma manera, voy a crear otra página. Duplico esta sección, y aquí, voy a escribir un solo comentario. Esta es la página dos. También, voy a cambiar el texto. Esta es la página dos. Esta es la página dos. Como voy a cambiar el texto del botón y voy a hacer que vaya a la página uno. Ahora, volvamos a la clase Mina. Aquí, voy a definir un diccionario. Ese diccionario va a almacenar todos los marcos. Yo qué decir las páginas. Así que escriba, marcos de puntos propios iguales a redondo versus diccionario vacío. Aquí, key representa el nombre de las clases, y usted representa el objeto frame real creado a partir de esa clase. A continuación, necesitamos recorrer estas páginas como la página uno y la página dos. Nosotros para que sea dos, no uno. Son dos. Entonces aquí, estoy tecleando para F en la página uno y en la página dos. F significa marco. Entonces dentro de este pro, marco igual a I dentro de la ronda versus continuer y self, quiero decir que este bucle itera a través de todas las clases de página y marco igual a F dentro de la ronda versus contenedor y auto crea un instante de esa Recuerda, continuer es el asistente padre donde se sentará la página y self es el controlador principal Quiero decir la app principal. Quiero decir, cuando F es igual a la página uno, esto se convierte en marco igual a la página uno, y cuando F es igual a la página dos, se convierte en marco igual a la página dos. A continuación, necesitamos establecer el nuevo objeto frame en un diccionario usando la clase. Quiero establecer en este diccionario de marcos. Para eso, aquí, necesitamos atar marcos de puntos propios dentro de los Runddress Pasaré los fotogramas variables equival Establece el nuevo objeto frame en un diccionario. Básicamente, hace que sea súper fácil buscar un marco. Y después podemos mostrarlo fácilmente. Después de eso, necesitamos empacar este marco. Para eso, voy a usar el método GET. Entonces escribe marco punto GED, número de fila cero, número de columna cero, NSEW pegajoso no sureste oeste Aquí colocamos el marco en un contenedor en la misma posición, número de fila cero y número de columna cero. Básicamente, todos los marcos se superponen entre sí en un mismo espacio. Y como saben, NSEW significa llenar toda la ventana. Significa que lo va a expandir en el lado norte, sur, este y oeste. Siguiente fuera del bucle cuatro y dentro de esta clase, voy a definir otro método. Entonces escribe, tipo Sono, Dave, y función y nuestro nombre de método es show frame aquí dentro del marco show, aquí voy a pasar el parámetro elf y las clases de página Entonces cada vez que llamamos a esta función, necesitamos pasar el nombre de la clase de página aquí, como la página uno, página dos. Después de eso, dentro de este método, necesitamos recuperar el objeto frame solicitado del diccionario Para eso, aquí para escribir marcos de puntos propios y aquí para proporcionar la clase de página variable. Y voy a almacenarlo en una variable de marco. Así que voy a escribir frame igual a los marcos de puntos propios. Y aquí tenemos que pasar el nombre exacto del marco cada vez que necesitamos llamar a la función. A continuación, voy a utilizar el importante método de Kinter. Un KiterMthod que da vuelta al marco, deja el fotograma seleccionado por encima de todos los demás fotogramas en un mismo contenedor Es un índice Z. Si sabes cómo funciona el índice Z en estimación y CSS, lo entiendes fácilmente. Para eso, necesitamos usar un método llamado T RIs. Entonces, para escribir frame dot, toma IR. Se va a mover el cuadro seleccionado frente a otras fletes. Después de eso, necesitamos llamar a esa función, show frame. Para eso, necesitamos saltar a nuestras páginas como la página uno y la página dos, y ahí necesitamos usar command parameter, command. Voy a usar la línea O así que escriba Lambda, Lambda y aquí, voy a escribir controller, controller dot método Shoframes Voy a llamar al método Shoframe. Mostrar fotogramas, marco de subrayado. Después dentro de las rondas en nuestra primera página, voy a llamar a la página dos. Voy a pasar la página dos aquí. Entonces copia el nombre de la clase, página dos, y voy a ponerlo aquí, página dos. En nuestra primera página, si pateamos el botón, entonces va enviado a la página dos. la misma manera cuando estamos en la página dos, entonces necesitamos acceder a la página uno. Entonces voy a copiar exactamente el mismo comando y pasar a la página siguiente, y voy a proporcionar una coma Después de eso, puse el comando y voy a cambiar el nombre de la página. Aquí, voy a pasar la clase de página uno. Entonces voy a reemplazar la página dos por la página uno. Y voy a poner este archivo. Ahora, antes de configurar este archivo y ejecutar este código, voy a agregar algunas propiedades propiedades a nuestros marcos. Quiero cambiar sus colores de fondo. Aquí, en nuestro constructor superit, después del coma, voy a escribir BG BG significa color de fondo, y quiero usar color azul claro, algún tipo, claro, azul. la misma manera, quiero usar diferentes colores para la página dos. Copio la copia la línea y la pego aquí y voy a cambiar el nombre del color y voy a hacerlo verde claro verde claro. Eso es todo, que puedas identificar las páginas a la perfección. Si configuro este archivo y ejecuto este código en mi terminal, ahora se puede ver, ahora se puede ver en nuestra ventana de Cinter, tenemos un marco Tenemos marco dentro de él y dentro de este marco, tenemos otro marco. Esta es la página dos. Si quieres saltar a la página uno, luego presiona ir al botón de la página uno. Si presiono el botón, ahora puedes verlo saltar a la página uno. Esta es la página uno. Nuevamente, si presiono este botón, va a saltar a la página dos. Ahora hay otro problema y déjame mostrarte el problema. Si leo en mi código, ahora se puede ver que abrió la última página. Quiero decirlo abrir página para ayunar. Primero, abre la página dos, pero no la quiero. Quiero abrir nuestra página uno primero. Para eso, tenemos que seleccionar eso. Déjame mostrarte dónde. Para seleccionar la página uno, aquí necesitamos llamar a la función show frame. Fuera del bucle cuatro, aquí, voy a escribir el método de Shaframe de punto autoestablecido Yo llamo a esta función y B Default, proporciono el nombre de la clase, página uno. Entonces por favor establece este archivo si ejecuto este código en mi arminal ahora puedes notar que abre la página uno primero porque porque aquí seleccionamos este, ShoframePage uno Por defecto va a abrir la página uno. Si presiono sobre este botón, vaya a la página dos, ahora puede verlo saltar a la página dos. Si vuelvo a presionar el botón, vuelve a la página uno. Entonces espero que ahora te quede claro, cómo podemos estructurar en una aplicación más grande con la ayuda de clases. Así que gracias por ver esta declaración en video para nuestro próximo tutorial. En el siguiente tutorial, vamos a hablar de herencia, cómo podemos usar la herencia en aplicaciones tipo. 44. Ejemplo 1 Botón con estilo personalizado: Una vez más, estoy de vuelta con un nuevo tutorial relacionado a la programación orientada a objetos con Kiner. Y en este tutorial, vamos a aprender herencia y reutilización de asistente en Ginter En lugar de reescribir código de asistente similar, podemos usar herencia para extender Kiner Wizard y hacer componentes reutilizables personalizados Podemos usarlo para botones, etiquetas y formas reutilizables. Y hoy en este tutorial, te voy a mostrar el primer ejemplo de botón de estilo personalizado. Vamos a definir una clase de botón personalizada, y vamos a usar esta clase, y vamos a usar la misma clase varias veces para crear el botón. Entonces comencemos la práctica y veamos cómo podemos crearla. Entonces como puedes ver, estamos en mi editor de código de salt studio y creo un archivo Python main dot P. Al principio para importar el módulo. Tipo de importación Kiner como TK. Después de eso, después de eso, necesitamos definir una clase para la app. Así que escribe clase mi app. Y esta clase está en tenido por clase TK, y dentro de ella por ahora, voy a escribir pass. Entonces necesitas pasar cada nombre igual a igual a función principal dentro de ella aquí y dentro de ella aquí, voy a crear el objeto. Que es utilizado por esta clase y nuestro nombre de objeto es app. Entonces voy a escribir app dot Min Loop. Y voy a poner este archivo. Se va a crear una inter ventana básica. Después de eso, volvamos al MAP aquí voy a crear el constructor. Dentro del Mapa, voy a quitar pase y voy a crear el constructor. Entonces escribe Dave init constructor. Después de eso, dentro de este constructor, necesitamos convertirlo en superconstructor Aquí voy a escribir constructor SuperDTET. A continuación, voy a asignar un título a esta app, algún tipo, establecer título de punto dentro del ejemplo de botón personalizado Rundress Ahora, voy a crear una clase que va a crear unos botones personalizados. Para eso, aquí, voy a definir otra clase y nuestro nombre de clase es botón personalizado. Botón personalizado dentro de los vestidos redondos, nuestra clase es de altura por esta clase, clase t botón. Entonces dentro de esta clase, voy a crear el constructor. Escribo D en ella, y dentro de los vestidos redondos, uso self también voy a pasar algunas variables como parent, text, y command igual a none. Entonces dentro del constructor init, necesitamos hacerlo, necesitamos hacerlo super constructor init Después dentro de las rondas, voy a llamar a la variable padre padre. Por encima de eso, voy a escribir texto igual a texto. Asigno esta variable a este comando d igual a comando. Así que cada vez que creamos el botón, necesitamos pasar el texto del botón, también el comando del botón. Entonces después de eso, voy a aplicar un poco de estilo a este botón, como el color de fondo, BG, color de fondo para el color de fondo que voy a usar en las tablas azul claro azul claro. Entonces después del color de fondo, voy a solicitar Don color AG para on color, igual a aquí, voy a usar color negro. Entonces voy a aplicar font ton font igual a aquí dentro de los pechos redondos, voy a usar fuente aérea twel pixel y bold A continuación, voy a agregar algo de relleno en XX tipo PAD X, diez, coma, pad Y, cinco píxeles. Voy a establecer este archivo. Entonces después de eso, necesitamos empacar este botón. Así que escribe método de empaque de puntos propios, y también agrega poco relleno cuando empaco este botón. Pad en YxS de diez píxeles. Quiero enviar este archivo. Se puede notar su mando igual a ninguno. Por defecto, no va a ejecutar ningún comando. Cuando arriba presionamos el botón, éste va a ejecutar ese comando que definimos. Así que vamos a crear un botón personalizado. Para eso, necesitamos llamar al botón custom class, y necesitamos pasar el parámetro el porque es necesario. De lo contrario, no va a funcionar. Auto significa objeto en sí mismo, y nuestro botón toma este hola, di hola en nuestra opción de comando, date prisa pasa esta función, di hola, self dot, di hola. De la misma manera, voy a definir otro botón. Voy a definir otro botón personalizado luego voy a salir de nuestro Prap Para eso, solo para escribir el nombre de la clase botón personalizado. Tenemos que colocarlo en un yo, y nuestro botón toma esta salida y Harry comando, self dot salir de este método, método rápido. Ahora después de definir ambos botones personalizados, necesitamos definir la función, decir hola. Necesitamos definir la función say hello. Para eso, aquí voy a escribir, Dave, saluda y dentro del runrass necesitas pasar al sl el objeto Después de eso, voy a escribir la declaración impresa. Dentro de esta función, voy a escribir una declaración print. Nuestra declaración de impresión es hola desde el botón personalizado y voy a configurar este archivo. Y nuestra función SL dot quick sale automáticamente de la aplicación. Self representa el objeto exacto. Vas a matar mi aplicación de aplicación. Así que preestablece este archivo si ejecuto este código en mi terminal. Como puedes ver, crea una ventana y puedes ver los botones. Estos botones son botones personalizados. No creamos los botones varias veces, solo para usar su clase. Aquí puedes ver el estilo de los teléfonos color de fondo, color forgon, tamaño, relleno, lo que sea Ya está en una plantilla de esta clase, botones personalizados, y la usamos dos veces en este anuncio. Entonces si presiono, di hola, ahora se puede ver en nuestro terminal, se imprime hola hola desde botón personalizado. Y si presiono salida, mata la ventana. Mató la ventana de mi aplicación. Entonces así es como podemos usar clases para la reutilización de asistente. Espero que ahora te quede claro. Gracias por ver este video. Estén atentos para nuestro próximo tutorial. En el siguiente tutorial, vamos a crear un campo de entrada personalizado. Vamos a crear entrada y etiquetar juntos. Así que gracias por ver este video. Estén atentos para nuestro próximo. 45. Ejemplo 2 Campo de entrada personalizado (etiqueta y entrada juntas): Me alegro de verlos de vuelta, chicos. Una vez más, estoy de vuelta con otro tutorial relacionado en decenas altas y la reutilización de los asistentes Hoy en este ejemplo, vamos a crear input fed personalizado. Vamos a crear etiqueta y entrada juntos. A veces en formularios GI, siempre usas etiqueta y entrada como pareja. En lugar de escribir la misma etiqueta y código de entrada una y otra vez, puede crear una clase reutilizable personalizada. Esa clase va a crear la etiqueta y la entrada juntos. Entonces, sin perder el tiempo, comencemos la práctica y veamos cómo podemos usarla. Como puedes ver, estamos en mi ist studio codeditor y ya creo una plantilla básica usando class, mi app Ahora, necesitamos crear la entrada de la etiqueta. Tenemos que crear la clase. Voy a definir una clase aquí, voy a escribir class level entry, y esta clase está en hit by tdt frame class Entonces dentro de esta clase aquí, voy a crear el constructor. Entonces escribe primero dentro de las bases redondas, para pasar el yo, el objeto mismo, luego aquí voy a pasar la parte y etiquetar el texto. Siempre que necesitemos usar la clase de entrada de etiqueta, entonces en ese caso, necesitamos pasar el objeto self y el texto de la etiqueta. Entonces después de eso, dentro del constructor de unidades, aquí, aquí necesitamos usar el método super con parent. Básicamente, va a heredar del marco. El padre es heredar del marco. A continuación, dentro del constructor, necesitamos crear una etiqueta. Así que escribe la etiqueta de punto automático igual a la tapa de garrapata y necesitas colocarla en una ventana automática. Además, un texto de etiqueta es esta variable, texto de etiqueta. Sea cual sea el texto que pasemos en esta clase, lo va a poner en esa etiqueta, y luego definimos el después de esta etiqueta, también ult empacar esta etiqueta. Empaque esta etiqueta, slptlabel dot PAP y la coloco en PT y ademas agrego algo de relleno Después de eso, voy a crear una cuota de entrada. Así bucear SeldTeEntry igual a TKentry y Harry lo puso en una ventana auto Después de eso, necesitamos empacar el campo de entrada. Entonces, para empacar este campo engy, necesitamos escribir selt entry dot pack Math Después de empacar el campo engy, voy a empacar el auto objeto Quiero decir todo el encuadre. Para eso, voy a escribir método SalpTPAG, y agrego poco padding en Ahora, vamos a saltar a la aplicación M. Aquí, voy a definir al objeto que es creado por la clase de entrada de nivel. Nuestro primer nombre de objeto es el campo name. Entonces escribe el punto nombre campo igual al nivel de entrada, nuestra clase, aquí llamamos a nuestra clase en un principio para proporcionar la variable de celda donde vamos a poner nuestro campo de entrada de nivel, que es el objeto en sí, y luego proporcionamos etiqueta nombre de texto. A continuación, voy a volver a usar la misma clase. Y esta vez voy a crear un campo de borde. Cellbt H campo igual a entrada de etiqueta, y esta vez voy a pasar este texto Y esta vez voy a pasar este texto en nuestra era de etiquetas y voy a configurar este archivo. Ahora, después de configurar este archivo y ejecutar este código en mi terminal, aquí se puede ver que crea la etiqueta también el campo de entrada. Y como pueden ver, aquí, llamamos a esta clase dos veces. Uno es para el campo de nombre y otro es para el campo H. Por eso utilizó la etiqueta de entrada oración. Ahora, necesitamos crear un botón. Pero antes de crear el botón, antes de crear el botón enviar, necesitamos obtener el valor de este campo de entrada. Para eso, voy a definir una función. Así que fuera del constructor init, fuera del constructor init, voy a definir un valor de puerta de función Dave valor de puerta, luego dentro de esta función, luego dentro de esta función, quiero devolver el campo de entrada tipo de valor return el punto entrada punto Método de Puerta. Sea cual sea el valor que pasemos en los campos de entrada, va a obtener el valor y necesitamos moverlo dentro del nivel de sangría, lo contrario pasará por una A. Eso es bueno. Ahora, vamos a crear un botón de envío dentro de la aplicación principal. Aquí, voy a definir un botón de enviar. Enviar botón igual al botón tdt y lo probamos en una ventana auto y nuestro botón toma para enviar y va a comandar esta función mostrar datos Por encima de eso, necesitamos empacar este botón. Para empacar este botón, voy a escribir submit sco button dot p. método. Ahora necesitamos definir la función que va a imprimir el nombre y el valor de borde. Para eso, fuera del constructor de nit en constructor, voy a definir la función, Dave mostrar datos dentro la ronda presiona para pasar celda después de eso, al principio, quiero imprimir el nombre Para imprimir el nombre, necesitamos obtener valor de este método de valor G, que está en nuestra clase. Desde la clase de entrada de nivel, necesitamos acceder a la función de valor G. Entonces para escribir, imprimir, nombre, aquí, ayuda punto nombre campo punto punto Gt Val. Del valor G, vamos a extraer el valor del campo name. Como puedes ver, creamos el objeto name field aquí usando esta clase. Sea cual sea el valor que pasemos en el campo de entrada, va a obtener el valor. la misma manera a la misma manera, voy a imprimir la función hFil value type print gebfel dot getValue, y va a obtener el valor y va a Después de establecer este archivo, si ejecuto este código en mi terminal y llenar este campo de entrada nombre uno y edad 29. Después envía ese botón, podrás ver el resultado en mi terminal, nombre anuncio H 29. Este es un ejemplo con campo de entrada personalizado. Aquí creamos etiqueta y campo de entrada juntos. Creamos una clase de la misma y usando esta clase, creamos un total de dos campos de nombre de objeto y Hfeld la misma manera, puedes crear todo lo que quieras. Depende de ti. No es necesario escribir el mismo código una y otra vez. Entonces ese es el beneficio de usar clase. Así que gracias por ver este video estad atentos para nuestro Next Tutorial. 46. Convertir GUI de Python en EXE: Esta es la parte más importante de este tutorial porque en este tutorial, vamos a aprender a convertir nuestro archivo Python en archivo X. Imagina que construyes una gran aplicación Python GI. A lo mejor es una calculadora, editor de texto o un juego, y ahora viene el gran ion. ¿Cómo se comparte el archivo con otros? ¿Quién no conoce Python y ni siquiera instala Python en su computadora? Entonces cómo puede usar la aplicación GI que construyas. En este tutorial, vamos a aprender cómo podemos convertir el programa Python un archivo ejecutable con la ayuda de un instalador de módulo Pi. Al convertir tu código en un ejecutable, tu código se vuelve portátil. También profesional y fácil de usar. Cualquiera puede hacer doble clic en él y ejecutar el programa sin preocuparse por dependencia de la instalación y la versión de Python. El usuario necesita comodidad, y hoy vamos a aprender cómo podemos darle. Comencemos lo práctico y saltemos a la pantalla de la computadora. Como pueden ver lado a lado, abro mi Shell de Windows Power y mi directorio de trabajo actual. Y en mi directorio de trabajo actual, tenemos un archivo Python, y voy a convertir este archivo Python en Axifle En nuestro primer toque, necesitamos instalar un módulo. Vamos a utilizar el instalador de Pi para convertir este archivo Python en un archivo EX. Aquí voy a escribir Pep Install Pi Installer. Entonces necesitas presionar el botón Enter. Como puedes ver, requisito ya satisfecho porque ya descargo este módulo, pero necesitas completar el proceso de descarga. Entonces necesitas usar el comando CD. Aquí, voy a escribir CD, C, D. Después de eso, necesitamos proporcionar un espacio, y voy a copiar la ubicación exacta de esta carpeta. Copio la ruta de la carpeta. Y aquí, voy a pasar la ruta de la carpeta. Después de eso, para abrir la carpeta, GI a EXE, necesitamos pasar una barra diagonal cuatro, y voy a darle a Enter Ahora estamos en esa carpeta, esta carpeta en particular, y ahora voy a convertir este archivo principal punto Pi en un archivo de distribución. Para eso, aquí, voy a escribir Pi instalador, Pi instalador. Instalador pi, space dash dash y quiero que sea un archivo, un archivo. Después de eso, voy a proporcionar un espacio y necesitamos pasar el nombre fino punto principal pi. Si presiono Enter, lo va a convertir en un archivo EX, pero hay un problema. El problema es que cada vez que abrimos nuestro archivo EXE, va a abrir la terminal. Déjame mostrarte. Voy a convertir este archivo Minding Pi en un archivo de distribución hollín, Enter. Como se puede ver iniciar el procesamiento. Y ahora puedes ver en mi directorio de trabajo actual, crea alguna carpeta, nosotros carpeta, carpeta de distribución, y algún archivo. Sigue funcionando. Tenemos que esperar algún tiempo para completar el proceso. Déjame mostrarte. Por último, se completa el proceso. Y si abro archivo de distribución con este archivo, ahora puedes ver nuestra aplicación, la convertimos con éxito en un EXFLE Si trato de abrir este archivo, como pueden ver, directamente lo ejecuto. Pero el problema es que abrió terminal, pero no lo quiero. No quiero abrir terminal cuando ejecuto este archivo EXE. Para resolver el problema, no necesitamos usar ningún comando de consola. Déjame mostrarte, alguien que lo hizo esta Consola, también, voy a eliminar todos los archivos como archivo Wheel, archivo de distribución, y el MinSpaXfle Para resolver el problema de la consola, escribimos necesitamos agregar este comando. Por instalador, un archivo, entonces necesitamos escribir ninguna consola, y aterspace necesitamos pasar nuestro nombre de archivo punto principal pi Entonces voy a darle a Enter. Up hit Enter, como puedes ver, empieza a funcionar. Tenemos que esperar algún tiempo para completar el proceso. Como puedes ver completa el proceso. Ahora, si abro mi carpeta de distribución y hago clic en este archivo EX, como pueden ver, ahora sin abrir la consola, se abre directamente la aplicación. Ahora puedes compartir tu aplicación con cualquier persona sin dudarlo. Ahora cualquiera abre fácilmente esta aplicación sin abrir la consola. Esta es nuestra aplicación de lista de tareas y ahora quiero asignar un icono a nuestra aplicación a nuestro archivo EXE. Por defecto, asigna este icono. Este icono de archivo. Ahora quiero asignar algo relacionado con esta aplicación. Como pueden ver, estoy en mi navegador y aquí busco la descarga del archivo icono. Va a proporcionar múltiples sitios web que proporcionan iconos, archivos punto CO. Aquí voy a abrir el primer sitio web, éste. Entonces voy a saltar al modo más sección C. Y aquí, voy a buscar archivo. Quiero descargar icono de archivo. Desde aquí, puede seleccionar cualquiera de ellos. En lugar de usar el icono de archivo, puede usar cualquier icono, como una calculadora. Alguien busca calculadora. Voy a buscar calculadora y voy a descargar este icono de lo contrario ese icono. mí me gustaría ir con éste. Yo selecciono éste. Después de seleccionar este, voy a seleccionar Pity y quiero seleccionar icono. Entonces voy a seleccionar la resolución. Y recuerda que necesitas seleccionar tanto bajo como puedas. Voy a usar este 132 pixel por 32 pixel, este, y voy a dar click en el botón Descargar ICO. Descargar ICO. Va a descargar automáticamente tu archivo a la carpeta de descargas. Si abro esta carpeta aquí, se puede ver el icono y voy a cortar este icono de esta carpeta y voy a poner en mi directorio de trabajo actual, éste. Además, voy a renombrar este icono. Voy a lograrlo. Voy a llamarlo app A, doble P. Ahora si te muestro la extensión de archivo de este archivo, puedes ver que es un archivo CO app.co y esto es lo que necesitamos Ahora voy a ejecutar el comando Bash, que va a asignar el icono a nuestro archivo EX Al principio, necesitamos abrir el directorio de trabajo actual en mi Windows Powershell Puedes hacerlo por comando cd, pero aquí voy a alabar comando enviado y luego dentro de la carpeta, voy a alabar patada derecha y aquí puedes ver una opción abierta Powershell Window aquí Si hago clic en él, va a abrirlo directamente abrir directamente la venta de energía de Windows en esta carpeta, y luego voy a escribir mi código. Ahora aquí necesitamos escribir el comando Bash que va a convertir eso va a convertir el archivo Python a A Ex Además, voy a asignar este icono a esta aplicación. Para eso, aquí necesitamos escribir Pi installer, Pi installer. Después del instalador tipo Pi, entonces tenemos que proporcionar, necesitamos definir quiero que sea un archivo, un archivo. Después de eso, no quiero abrir consola así que escribo dash dash, no consola. Entonces voy a escribir dash dash, voy a asignar el icono para asignar el icono , escriba icon, icon igual a icon igual a app o icon name app dot Cofile entonces por fin, necesitamos pasar el archivo Python nuestro nombre de archivo Python es punto principal Pi Después de eso, si le pego a Anchor, como pueden ver, empieza a funcionar. Y tenemos que esperar algún tiempo para completar el proceso. Como puedes ver, completa con éxito el proceso. Ahora si abro mi carpeta de distribución y ahora se puede ver en nuestra aplicación en nuestra aplicación EXE, se le asignó el icono. Ahora nuestra aplicación se ve mucho más auténtica que anterior porque aquí asignamos icono a esta aplicación. Ahora bien, si hago clic en esta aplicación, como pueden ver, no abre ninguna consola y abre directamente nuestra aplicación para hacer lista. En este tutorial, solo trato de mostrarte cómo podemos asignar icono en nuestra aplicación. Aquí aprendemos cómo podemos asignar icono a nuestra aplicación. 47. Proyecto 1: aplicación de lista de tareas: Así que bienvenido a nuestro primer proyecto relacionado con Kin tart GUI. Y hoy en este proyecto, vamos a construir una lista de tareas pendientes, una lista simple de hacer. Entonces veamos la demostración de cómo va a funcionar nuestro Tudlis Como pueden ver, aquí abrí mi aplicación, y esta es nuestra aplicación parece. Primero, tenemos un campo de entrada, luego tenemos un botón en Tarea, luego eliminar el botón Tarea. Después de eso para mostrar el elemento de la lista, tenemos un list box. Y dentro de este list box, vamos a mostrar todos los elementos de la lista uno por uno. Dentro de este cuadro de lista, podemos agregar los elementos de la lista. Además, podemos eliminar los elementos de la lista con la ayuda de este botón. Al principio, voy a agregar un ítem de lista. La primera tarea que voy a añadir en esta lista es la limpieza. Entonces si escribo limpieza y hago clic en el botón Tusk, como puedes ver, agrega la tarea en nuestra lista De la misma manera, voy a agregar dos tareas más. Después de la limpieza, voy a agregar lavandería. Entonces para escribir y luego voy a agregar la tarea en nuestra lista ToDoList Entonces en mi lista de Todo, voy a agregar compras de abarrotes, y voy a presionar en el botón Tusk y voy a agregar la tarea en nuestra lista Ahora, en nuestra lista de Turo, agregamos un total de tres artículos. Ahora bien, si quieres eliminar uno de los artículos de esta lista de comestibles, entonces voy a eliminar la lavandería. Selecciono lavandería y presiono el botón Eliminar Tarea. Después de presionar Eliminar tarea, como puede ver, eliminó el elemento del cuadro de lista. Es un proyecto muy sencillo y mejor para iniciar el desarrollo GI con Python Kinder Aquí vamos a aprender cómo podemos extraer datos en campo de entrada, cómo podemos procesar los datos, cómo podemos eliminar los datos, cómo podemos mostrar los datos en nuestro cuadro de rezagos, etcétera Sin perder el tiempo, comencemos la práctica. Como pueden ver, estamos en mi editor de código de estudio Visa y creo un archivo Python main dot pi. Al principio, voy a importar el módulo TK, tipo Import Kinar como TK Entonces voy a importar otro módulo. Necesitamos importar cajas de masas de Kiner. Para eso, voy a escribir desde Kiner importar cajas de masas. Después de eso, después de eso, voy a crear la ventana principal. Escribo raíz igual a Tik punto clase T. Held crear un objeto usando clase Tk para crear la ventana principal. Entonces voy a agregar un título. Entonces escribo el título de punto raíz para hacer la lista. Además, voy a establecer la geometría, y voy a establecerla geometría de punto raíz 400 por 400. Es una caja cuadrada. A continuación, voy a crear entrada. Que va a tomar entrada del usuario. Para eso, voy a definir una entrada variable, entrada igual a entrada pot. Dentro de la prensa redonda, colocamos en una ventana raíz. Después definimos con 30 píxeles. Después de eso, necesitamos empacar este campo de entrada, así que tecleo entry Doc back method, y aquí agrego algo de padding en YxS y asigno diez pixel padding. Después de eso, necesitamos definir dos botones. Primero para definir el botón Agregar y luego definir el botón de eliminar. Voy a definir una variable llamada botón add. Agregar botón igual al botón t punto. Aquí utilizo vidrio botón del módulo TK. Entonces en tales rondas, colocamos el botón en una ventana raíz y nuestro botón toma Ts y nuestro botón toma es agregar colmillo y definimos y aquí definimos W a este botón, 15 píxeles Entonces tenemos que empacar este botón. Corbata agregar botón punto PAC MTO, voy a agregar alguna almohadilla de relleno en YXSFivePixel De la misma manera, voy a definir otro botón. Aquí, voy a definir botón de borrar. Entonces para escribir, eliminar botón underscoe igual a t Button Glass, lo colocamos en una ventana raíz y nuestro botón toma esta tarea de eliminar, y asignamos esto con 15 píxeles Después empaco este botón, así escribo, borrar botón punto método PAC. Empacar Dentro del proceso redondo, voy a agregar pad, Y, cinco píxeles. Voy a configurar este archivo y para mostrar el elemento de la lista en una lista turística, necesitamos crear un list box. Voy a definir otra variable menor caja. Cuadro de lista igual a escuchar, necesitamos usar el método List box. Escribo tdt Cuadro de lista. Lo colocamos Aquí lo colocamos en una ventana raíz y definimos ancho 50 y alto 15, nuestro modo de selección es tick dot singer. Recuerde, el modo de selección permite seleccionar solo una tarea a la vez. Solo puede seleccionar una tarea a la vez del cuadro mínimo. Después de eso, voy a empacar este cuadro de lista. Tipo I, método de paquete de puntos de caja oriente. Camino dentro de los vestidos redondos, voy a agregar algo de emparejamiento Pat a diez píxeles de x y voy a establecer esto después de establecer este archivo, voy a agregar el bucle principal porque no agregamos el bucle principal. Sin el bucle principal , no va a funcionar. Es un bucle de eventos Kiner. Escribo root dot main loop, y voy a configurar este archivo. Básicamente, este bucle mantiene la ventana abierta y receptiva hasta que el usuario la cierre. Después de configurar este archivo, si ejecuto este código en mi terminal, es como se ve nuestra lista de Turo. Teníamos el campo de entrada donde vamos a poner nuestra tarea. Tenemos botón Atax y botón de eliminar tarea. Ahora bien, si trato de sentir algo como tarea y trato de agregar la tarea en esta lista, no va a funcionar porque no creamos la función para esos botones. Necesitamos crear una función para En el botón de tarea, también indicamos función para el botón Eliminar tarea. Consigamos las funciones. Cruzo mi terminal y vuelvo al código. Al principio, al principio, voy a definir una función llamada a la tarea. Escribo DF en la tarea. Luego dentro de esta función, al principio, necesitamos obtener el valor de este campo de entrada. Quiero establecer este feed de entrada. Sea cual sea el tipo de usuario en ese campo de entrada, necesitamos obtenerlo. Para eso, voy a definir una variable y nuestra variable m es tarea, por lo tanto igual al método de entrada punto Gate. Usando este método, podemos obtener el valor. Ahora necesitamos establecer una condición IP. Tarea HNotyeTask EP, no igual a igual a en blanco. Entonces dentro de esta condición IP, quiero poner datos en este list box. Para eso, necesitamos usar el método insert. Así que escriba list box punto insert. Si nuestro interferente no está vacío, en ese caso, va a agregar el elemento de la lista a este list box. Como puedes ver, en su interior, utilizamos total dos parámetros t punto. Usando eso, podemos agregar el elemento final de la lista. Entonces pase lo que pase, va a agregar final de la lista. Entonces, si hay datos existentes en nuestro cuadro de lista, entonces va a agregar el nuevo final de datos de la lista. Después pasamos la tarea, la tarea exacta que obtenemos de la entrada fieed Ahora después de agregar la tarea con éxito, necesitamos despejar el entrfeelt Para ello, necesitamos eliminar método. Entonces tip entry dot delete, y voy a borrar todo. Entonces paso de 02p punto. Entonces también ET manejar el o. En nuestras partes s en nuestro bloque Ls, quiero mostrar mensaje dor. Entonces desde el cuadro de mensaje, cuadro de mensaje, quiero mostrar la advertencia. Mostrar advertencia dentro de las prensas redondas, dentro de los puertos dobles, voy a teclear advertencia. Entonces una coma, o nombre de ventana es advertencia y luego una coma a y aquí, voy a escribir, por favor ingrese una tarea, y voy a configurar este archivo Ahora, después de crear la función de tarea adt, necesitamos llamar a la función en nuestro botón usando el parámetro command command. Déjame mostrarte. En nuestro botón de anuncio aquí, Ater coma, voy a escribir comando, comando, y voy a pasar el nombre de la función en la tarea Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal y trato de agregar una tarea, supongamos tarea, tarea y presiono en el botón Tarea, como puedes ver, agrega la tarea en nuestro list box. Además, se despejó el campo de entrada. De la misma manera, voy a agregar otra tarea. Entonces voy a agregar otra tarea como comer primero un freno saludable. Entonces voy a agregar la tarea en nuestra lista de tareas pendientes. Después de presionar el botón Agregar en el botón Tarea, se agrega en nuestra lista de tareas. Ahora quiero eliminar una de las tareas de esta para hacer menos. Después de seleccionar la tarea del cuadro de lista, quiero eliminar. Si presiono el botón de borrar, no lo va a eliminar. Necesitamos crear una función que vaya a eliminar el elemento de la lista. Vamos a definir otra función, eliminar tarea. Entonces, debajo del método at task, voy a escribir Dave delete task. Entonces dentro de este método de eliminar tarea voy a usar try y ext block. Intenta manejar el error a la perfección. Prueba dentro del bloque Try. Aquí voy a definir una variable llamada tarea seleccionada, tarea seleccionada igual a listbox punto selección de autos El método de selección de autos, escrito un Tapl de índices seleccionados Si quieres seleccionar varios artículos anticipados, sí, puedes. Se va a crear un tapel de eso, entonces tenemos que eliminarlo. Aquí, voy a escribir listbox dot Delete método, y dentro de él, voy a pasar la tupla de tareas seleccionada Y si no seleccionas nada presionas, pero presionas el botón de borrar, en ese caso, necesitamos mostrar mensaje de error. Entonces en nuestro bloque except, excepto dentro de este bloque, quiero mostrar un mensaje de advertencia. En algún momento cuadro de mensaje dot show warning. Y nuestro windoame es warning y nuestro mensaje de advertencia es, por favor seleccione una tarea para eliminar Voy a establecer este archivo. Ahora después de crear el método, eliminar tarea, necesitamos llamar al método en nuestro botón, eliminar botón. Copio el nombre del método, y aquí, voy a usar el parámetro de comando. St coma, voy a escribir comando, opción de comando. Comando igual a nuestra función eliminar tarea, y voy a satisfacer. Ahora para satisfacer, voy a ejecutar este código en mi terminal, y aquí está nuestra lista de tareas pendientes. Al principio, voy a agregar alguna tarea en esta lista también. Nuestra primera tarea es despertar y hacer tu cama. Agrego la tarea en esta lista de hacer, y como pueden ver actualizar alabanza en botón, despeja nuestro interfiel Ahora nuestro interfield es que si vuelvo a alabar en el botón de Tarea, aquí puedes ver un mensaje de advertencia Por favor ingrese una tarea. Entonces no podemos dejarla negra. Entonces voy a agregar otra tarea, desayuno EKLD y voy a agregar la tarea Después de eso, quiero eliminar una de las tareas de esta lista, como despertar y hacer tu cama. Después de seleccionar la tarea, si hago clic en, eliminar el botón Tarea, como se puede ver borra la tarea de la lista de tareas pendientes. Espero que ahora te quede claro cómo podemos crear una lista básica por hacer. Este es nuestro primer ejercicio, así que lo hago muy sencillo. En nuestros próximos tutoriales, vamos a hacer muchas cosas. Gracias por ver este video schedue para nuestro próximo tutorial 48. Guarda datos de forma permanente con JSON: Entonces esta es la segunda parte y parte avanzada de este tutorial. Y en esta sección, vamos a aprender cómo podemos guardar los datos en nuestra lista de tutores de forma permanente con la ayuda de JSM como puedes ver Hero abrir mi aplicación anterior, y nuestra aplicación, no guardar los datos de forma permanente Si agrego los datos en nuestra lista, si borro la aplicación, lo contrario, mato la aplicación, y si vuelvo a ejecutar mi aplicación, ahora nuestra aplicación se convierte en huevo vacío, necesitamos guardar los Necesitamos guardar los datos permanentemente en nuestro list box. Ahora déjame mostrarte otra aplicación. Esta es la versión actualizada de esta aplicación donde guardamos los datos forma permanente con la ayuda de Jason. Notación de objetos JavaScript. Ahora bien, si mato esta aplicación, de lo contrario, borre el terminal, de lo contrario, elimine el terminal, luego vuelva a ejecutar este código. Déjame mostrarte como puedes ver, aún tenemos los datos en nuestra lista. No elimino los datos de forma permanente. Esto es lo que hoy vamos a construir en este proyecto. Básicamente, vamos a actualizar nuestro proyecto existente, comencemos. Como puedes ver, estamos en mis usuarios studio cod editor y abrí mi anterior archivo Python main dot Pi. En ese archivo, creamos ToDoList usando Kiner y ahora necesitamos guardar nuestro valor ToDoList Para ello, vamos a utilizar la notación JSN JavaScript Object. Ahora, primero, voy a importar JSN. Aquí voy a escribir import JSN. Después de eso, voy a importar módulo OS, así que voy a escribir import Os. Para guardar y cargar la tarea, vamos a utilizar JSNFV Voy a crear un JSNFive con JSNETension. En mi directorio de trabajo actual, voy a escribir task dot JSON. Por ahora, está completamente vacía. Después de eso, voy a cargar este JSNFle en una variable. Para eso, voy a definir una variable y/o variable es archivo de datos, archivo underscoe de datos igual a tarea punto Ahora necesitamos crear dos funciones totales para guardar los datos JSN y cargar los datos de Jasn Al principio, voy a crear cómo podemos guardar los datos de JSN en nuestro menor cuadro Quiero decir que necesitamos guardar la tarea de List box actual en JSNFive Para eso, voy a definir una función. Aquí, voy a definir una función y nuestro nombre de función es Dave save task. Después de eso, dentro de esta función, voy a recuperar todos los artículos inA en la caja este como taple Para eso, voy a definir una variable y nuestro nombre de variable es tarea, tarea igual a como método box dot gate. Después dentro de las rotondas, aquí seleccionamos todos los elementos de la lista, todos los elementos de menor caja A continuación, necesitamos abrir este JSNFLE que guardé en un Para eso, voy a usar con método abierto. W abrir dentro de las redondas voy a pasar el archivo de datos archivo de datos, y quiero abrirlo como modo de escritura Modo, escriba W ya que voy a crear un puntero de archivo que es mono. Entonces dentro de este archivo, quiero usar el método DAP. Sm tipo JSnT estiércol. Después dentro de los versos de ejecución, voy a proporcionar la tarea, y quiero escribir la tarea en nuestro A file pointer, A, luego apacma, voy a escribir indio indio cuatro Ahora la pregunta es ¿por qué usamos IndiantF? Indios iguales a cuatro. Porque al guardar datos en un archivo JSN, Python puede escribirlo todo en una línea Es muy difícil de leer. Entonces, para que sea un formato legible por humanos, usamos Indiant four Le dice a Python que formatear el JSN con una sangría de cuatro espacios Depende de ti puedes usarlo o no. Pero si lo usas, entonces puedes leer los datos fácilmente desde el JSNFle Entonces después de obtener el valor de la menor caja, lo guardamos en un JSNFle Ahora voy a llamar a esta función. Entonces copio el nombre de la función Saffle, y voy a llamarlo cuando use AdTask Mathod Después de eso, voy a llamar a este método, Guardar tarea. Y voy a poner este archivo. Así que cada vez que presionamos el botón Agregar, este botón, botón de agregar, va a comandar en método de tarea, esta función, en tarea. Y como puedes ver en nuestro método at task, cómo llamamos método sep task. Y este método va a establecer los datos a este archivo Jason. Entonces, vamos a golpear. Pero antes ejecutar este código en mi terminal, te voy a mostrar el archivo Tas dot GSN Por ahora, como puedes ver, es un archivo vacío. Ahora, vamos a ejecutar el código. Y aquí, voy a agregar una tarea. Entonces nuestra tarea es la tarea. Voy a presionar en el botón Tarea. Después de pulsar el botón, como puedes ver, se agrega la tarea en mi list box. Ahora bien, si te muestro mi tsdtjsnfle, déjame mostrarte entonces voy a Cierro esta ventana y cierro este programa. Ahora si vuelvo a la tarea punto JSNFle, aquí se puede ver Se guarda el Jata en nuestra tarea de JSNFle. Ahora si me agacho a mi código y vuelvo a ejecutar este código, pero aquí no se puede ver nada porque acabamos de establecer el archivo No volvemos a cargar el archivo en nuestro list box. Ahora necesitamos crear otra función que vaya a cargar el archivo a nuestro list box nuevamente. Volvamos al código. Ahora voy a definir otra función llamada Load task, Sumar type, Dave, load task dentro de la función Dentro de esta función, si la ruta del archivo es existir, quiero decir si los archivos JSON existen en nuestro directorio tipo, si s punto p punto existen, archivo de datos, entonces dentro de esta condición IP, quiero abrir este archivo para abrir este archivo, aquí escribo con abierto con abierto, luego dentro de las prensas redondas, aquí abro el archivo de datos y abro este archivo en modo lectura como AF es archivo puntero. Después dentro del capó abierto Math, luego dentro de este archivo, quiero usar try and except blog. Pruébalo voy a probar dentro del trib doc help para definir una variable llamada task Tarea igual a, quiero cargar la tarea Soong tipo Json método de anuncio Cargar, dentro del proceso de ronda, voy a pasar el puntero de archivo F. Entonces voy a ejecutar un seguimiento para IM en tarea para iteming tarea dentro de este bucle de otoño, luego quiero insertar el ítem al menos cuadro Así que escriba como caja, como método de inserción de punto Box. Insertar. Después dentro de los autobuses redondos, y quiero agregar el menos ítem final del list box. Escribo P punto Maththub coma y quiero agregar el artículo. Como puedes ver, ella escribe un elemento ortográfico incorrecto, no en el artículo de artículos de TM. Voy a establecer este archivo. Después dentro de este tri bloque, primero, voy a cargar el JSNFle Para eso, voy a definir una variable llamada task, task igual al método de carga JSON. Carga. Dentro de las Rundbas voy a pasar el archivo A. Entonces voy a ejecutar un bucle de cuatro, algún tipo por tarea, tarea en tarea Después dentro de este bucle de cuatro, quiero insertar la tarea. Quiero insertar la tarea en el cuadro de lista. Para eso, voy a escribir List box dot insert method. Insertar. Dentro de las llaves redondas aquí, voy a escribir TK punto d. Quiero agregar el final de la tarea de este cuadro de lista, y luego voy a pasar la tarea real Después de abrir el archivo, va a probar este código. Después de eso, después de eso, en nuestra condición except, excepto Json dot Jason error del decodificador, luego dentro de este bloque, quiero escribir pass. Ahora la pregunta es ¿cuándo va a lanzar una flecha? Cuando nuestro archivo esté completamente vacío, entonces va a lanzar una flecha. Cuando va a lanzar un error, lo escribo pass, va a significar que no va a lanzar ningún mensaje de error, solo va a saltarse esa porción. Escribo un solo en comentario caso de archivo vacío, y voy a configurar este archivo. Ahora voy a llamar a la función load task, copiar el nombre de la función load task, y voy a llamarla antes del bucle principal en esa posición. Entonces necesitamos llamar a la función Set task en nuestro método delete, delete task method. Entonces después de eliminar la tarea, también, necesitamos establecer la tarea en nuestro archivo SN. Voy a establecer este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, ahora puedes ver después de ejecutar este código en nuestra terminal, ahora puedes ver cómo entrena la tarea existente desde el archivo GSN Si agrego una nueva tarea, supongamos música y agrego la tarea y cierro la app, después de cerrar la app, si vuelvo a ejecutar este código, ahora puedes notar que no borre nuestra tarea No elimino nuestra tarea de forma permanente. Guardo toda la tarea en un archivo JSN en ese archivo. Con la ayuda de JSN se nos ayuda con éxito a guardar los datos para que nuestros eliminemos de la lista Espero que ahora te quede claro, gracias por ver este video estad atentos para nuestro próximo proyecto. 49. Proyecto 2: calculadora simple: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto, y hoy en este proyecto, vamos a construir una calculadora simple GI con Kiner que realice operaciones aritméticas básicas como suma, sustracción, multiplicación Como puedes ver, tenemos botones numéricos 0-9, entonces tenemos opción clara, también evaluamos con expresión Probemos la calculadora. ¿Funcionan correctamente o no? Voy a escribir tres, dos, y voy a multiplicar con 52. Y si alabo igual a seno, como se puede ver escrito el resultado. Con eso, quiero -356. Entonces si alabo igual a seno, está escrito el resultado. Y si lo divido por tres, entonces presione igual a aquí se puede ver escrito el resultado. Ahora bien, si quieres borrar el campo de entrada, solo necesitas alabar a C este botón y va a borrar el campo de entrada. Es una calculadora básica de símbolos. Veamos cómo podemos crear esta calculadora de símbolos. Empecemos la codificación. Entonces finalmente, estamos en mi editor de código visual studio. Al principio, voy a importar el módulo Kiner. Aquí voy a importar Kiner como TK. Después de eso, voy a definir voy a definir la ventana raíz. Voy a escribir root igual a t punto Tlass. Entonces voy a definir el título. Ato el título de punto raíz y es una calculadora sencilla. Al fin, voy a definir la geometría. Entonces escribe geometría de punto raíz, 300 por 400. Y por último, voy a iniciar el bucle principal, el bucle principal del punto raíz. Ahora, al principio, voy a definir una cadena vacía. Así que escriba expresiones igual a es cadena vacía. Esa cadena vacía va a contener las expresiones matemáticas, y luego voy a crear una variable de entrada para almacenar el valor del campo de entrada. Así que ate h entryWaentry guión bajo, donde, entryware igual a TK punto, entryware igual a TK punto Después de eso, voy a crear un campo de entrada. Así que escribe nuestro variablem entrada entrada igual a t método de entrada, tit clase de entrada, y lo ponemos en una ventana raíz y aquí asignamos variable de texto igual a ware de entrada, establecemos área de fuente y tamaño de fuente es 20, aquí alineamos nuestro texto lado derecho Escribo justificar a la derecha. Justificar a la derecha, alinear el texto a la derecha, como una calculadora normal. Después de eso, necesitamos empacar este campo de entrada. Voy a escribir entrada dot pack, sentirme igual a ambos y Hero usa algún acolchado interno desde la dirección SS, Ipadx luego usamos acolchado exterior Ahora para los botones de la calculadora, necesitamos tomar una, necesitamos tomar un marco de botón. Aquí voy a escribir button frame igual a tick dot frame y colocamos el frame en una ventana raíz, y luego empaco esta variable de marco de botón. Ahora dentro de este marco de botones, vamos a poner todos los botones. Como 0-9, botón de par, igual dos más signo de multiplicación sinusoidal dividido sinusoidal, etcétera, para definir los botones, aquí, voy a usar una Voy a definir una variable de botones. Después después dentro del cuadrado ss voy a usar valores de botón anidados En nuestra primera fila, imprimimos siete, ocho, nueve y seno dividido. Después después de la coma, voy a pasar otro valor anidado. Quiero pasar otro valor de lista anidado. Aquí, voy a poner 456 estrellas y en la siguiente fila, voy a escribir uno, dos, tres, y menos seno, en nuestra última fila, voy a escribir en esta lista, voy a pasar cero auto igual a más seno. Es una estructura básica de calculadora. Básicamente, se trata de una lista anidada que define el diseño de los botones fila por fila Ahora, usando esta lista, necesitamos crear los botones dinámicamente. Para eso, voy a usar un seguido. Déjame mostrarte cómo. Aquí voy a atar para fila en botones, cada una de la fila en botones, luego dentro del bucle de otoño, luego quiero crear nuevo marco para las filas. Aquí voy a atar frame, frame igual a ticket dot frame class, y dentro de él, voy a pasar marco de botón. Aquí ponemos nuestro nuevo marco dentro del marco de botón. Entonces empacaremos este marco. Entonces, para atar el paquete de puntos del marco, expandirlo igual a través y llenar ambos. Expande y rellena ambos, asegúrate de que se estiren bien. A continuación, tenemos que revisar cada uno de los elementos de la lista. Dentro de la lista, tenemos fila Op list. Y en esta fila, tenemos múltiples elementos de lista. Así que tenemos que revisar cada uno de los elementos de la lista. Para eso, de nuevo, voy a usar cuatro bucles. Entonces voy a escribir dentro este cuatro bucle para botón en fila, luego dentro de este bucle fol, luego quiero crear los botones. Usando este seguimiento, apuntamos a cada uno de los personajes y lo almacenamos en una variable de botón. Entonces B igual a Tk Dot botones y lo colocamos en una ventana de marco, y nuestro botón toma este exacto el botón. Y nuestra fuente es aérea y el tamaño de fuente es 18 y se eleva el relieve. Físicamente, se le da un estilo de borde elevado. Entonces dijimos con y altura. A continuación, voy a empacar este botón. Entonces voy a atar el método de paquete de puntos B y definimos el lado t. Además, expandir es verdadero y llenar es ambos. A continuación, voy a adjuntar todo este botón con método bind. Para eso, voy a escribir B got bind método. Después dentro de los vestidos redondos y dentro del brress redondo primero, usamos el botón un evento Significa la patada del botón izquierdo del ratón. Y una tercera pulsación izquierda del ratón sobre los botones, va a llamar a esta función método click. Tenemos que definir la función, kick. Entonces voy a definir la variable. Entonces después de importar el módulo. Aquí voy a definir la función. Dave, haz clic dentro del evento de desnudarse. Por ahora dentro de él, voy a escribir pass, y voy a configurar este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal, ahora, nuestra estructura se ve así. Es una calculadora hermosa, estructura de calculadora simple, y esto es lo que queremos. Ahora, necesitamos manejar la función de controlador de eventos, haga clic en. Al principio, necesitamos obtener el valor exacto del botón. Para eso, voy a definir un texto variable. Texto igual al evento asistente punto Cgate dentro de la rotonda definimos el Queremos obtener el valor del texto. Del evento particular, supongamos que si el usuario alaba uno, entonces de este evento, vamos a extraer el valor del asistente usando Cgate aquí vamos a extraer el valor del texto de la etiqueta Entonces el texto de un nivel es uno. Entonces obtenemos el valor y lo almacenamos en esta variable. Básicamente, extraemos el valor del botón. Al mismo si alabamos signo más, entonces va a obtener el valor más y ponerlo en esa variable. Ahora, recuerda esa expresión de variable, es una variable global y es una secuencia vacía. Necesitamos usarlo dentro de la función. Para eso, necesitamos hacerlo global. De lo contrario, lo de nuestra función es una variable local. Entonces aquí, voy a escribir global y nuestra variable am es expresión. Lo hacemos variable global. Esta variable va a almacenar la expresión matemática que el usuario está construyendo. Supongamos dos más cuatro, 2/1, algo así Ahora voy a establecer una condición IP. Quiero decir cs un tipo Un texto igual a igual a dentro de los códigos dobles, si alabamos seno igual de la calculadora, entonces dentro de esta condición IP, voy a saltar al tri bloque TRY. Si el usuario alaba el seno igual, supongamos que el usuario escribe dos más tres se multiplican por cuatro. Entonces usuario prese signo igual. Ahora necesitamos evaluar esta expresión, la expresión de cadena. Para eso, necesitamos usar un método llamado Eval, y lo voy a almacenar en una variable, subtipo result, result equal to, y aquí voy a usar la función Eval, yE val. Después dentro de las direcciones redondas, voy a pasar la expresión, esta variable. Entonces aquí pasamos la expresión exacta que escribimos en calculadora. Supongamos que dos más tres se multiplican por cinco, la expresión exacta, y voy a procesar esta expresión con el método El. Se va a calcular la expresión, y luego después de calcular esta expresión, quiero convertir esta expresión en un stream. Entonces voy a usar el método de lágrima, THTML. Entonces lo voy a poner en una ronda de estudio ss. Después de calcular el valor, nuevamente, lo hacemos un stream. Entonces entonces en nuestro campo de entrada en nuestra variable de entrada, voy a establecer el valor. Para eso, voy a escribir método de set de puntos de entrada, y voy a establecer el resultado, entonces otra vez, necesitamos almacenar de nuevo, hay que almacenar el valor a esta expresión que podamos recalcularla Entonces alguien escribe expresión igual a resultado. Supongo que en nuestra expresión pasamos, pasamos dos más dos más cuatro, nuestro resultado se vuelve ocho. Ahora, va a imprimir los ocho en nuestro campo de entrada. Y nuevamente, va a pasar el ocho en nuestra expresión que podamos usar este número para otro cálculo. Supongamos que con ocho, quiero sumar cinco. Si tecleamos signo más y presionamos cinco y luego otra vez, si presionamos signo igual, entonces ocho más cinco se convierten en 13. Además, tenemos que manejar la excepción. Para eso, voy a escribir excepto excepción como E dentro del bloque except. Si no hay problema, quiero imprimir el error, entrada punto punto set error y nuestra excepción se vuelve vacía. Entonces quiero que nuestra expresión expresión vacía sea igual a negra y voy a poner este cinco. Entonces en nuestra condición de labios, voy a poner otro caso Un texto igual a igual a C, quiero decir claro entonces dentro de esta condición de labio, luego quiero borrar la expresión, expresión igual a negro. Además, voy a establecer el valor entrywa, algún tipo de entrada. Entrada w punto set Método, Set, voy a volver a hacerlo en blanco. Además, en nuestro sp, ahora dentro del sp, necesitamos actualizar la visualización de entrada con nueva expresión. Además, necesitamos agregar el texto del botón a la cadena de expresión Para eso, voy a escribir expresión más más igual a grement con texto, variable de texto aquí voy a decir entryWaree entry, underscoware, entryware dot set method, más más igual a grement con texto, variable de texto aquí voy a decir entryWaree entry, underscoware, entryware dot set method, S quiero establecer la expresión. Eso es. Ahora, ahora para todos los botones como DST de 029 y operadores y todos los operadores como multiplicación y división más menos, se va a agregar el texto del botón al flujo de expresión y actualizar la visualización de entrada con Entonces, si configuro este archivo y ejecuto este código en mi terminal, veamos es correcto o no. Ahora bien, si presiono siete aquí y quiero multiplicar por nueve, entonces si presiono signo igual, como se puede ver reginamente resultado. Ahora quiero despejar este campo de entrada. Si presiono C, va a borrar el campo de entrada. Ahora vamos a crear otra expresión. Voy a plaus dos con seis. Entonces me voy a multiplicar con cinco. Esta es una nueva expresión. Ahora intentemos expresarnos con nuestras condiciones. Cualquiera que sea la expresión que escribamos, va a evaluar. Se va a evaluar la expresión y crear el resultado y va a crear el resultado cuando se alabe seno igual. Después de presionar seno igual, ejecuta este código de bloque dri y crea ese resultado Entonces después de crear ese resultado, va a enviar de nuevo el resultado a esta expresión. Ahora, se ha convertido en una nueva expresión. Si multiplico con dos, ahora otra vez, se ha convertido en una nueva expresión y pasar a esta y pasar a este bloque de resultado cuando presionamos igual a cada vez que presionamos C, va a borrar la expresión. Se va a hacer que vuelva a vaciar la cadena, y también va a establecer la variable de entrada vacía. Si presiono C, va a eliminar todo de este campo de entrada. Entonces entonces lo que sea que consigamos en nuestro trabajo de Es actualizamos nuestro campo de entrada. Esta es la matemática simple que necesitamos hacer para esta calculadora básica. Espero que disfrutes. Gracias por ver este video, mantente atento para nuestro próximo tutorial. 50. Proyecto 3: reloj digital: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto, y hoy en este proyecto, vamos a construir este reloj digital con la ayuda del módulo T y Kinar GUI Empecemos lo práctico y veamos cómo podemos crear eso. Por último, estamos en mi editor de código de Visual Studio, y al principio, voy a importar Kinromduyiput A continuación, voy a importar el módulo T porque necesitamos módulo de tiempo para crear el reloj digital. Después de eso, voy a escribir root igual a DK punto TLS, clase Tk Entonces voy a ponerle título Summertyp root dot title, y nuestro título es reloj digital También, voy a establecer la geometría. Tipo Sumo, Geometría de punto raíz, 400 por 200 píxeles. Después de eso, voy a agregar color de fondo a estas ventanas raíz. Entonces escribe, método de configuración de punto raíz, config, luego dentro de las rondas, fondo BG, igual a en los códigos dobles negros. Aquí utilizo dground de color negro. Entonces voy a ejecutar el bucle principal, Solutt root, dark, main loop, y voy a configurar este archivo Yo configuro este archivo, si ejecuto este código en mi terminal, es como se ve nuestra ventana con fondo de color negro. Ahora, a continuación, voy a crear una etiqueta esa etiqueta va a mostrar nuestra hora actual. Para eso, voy a definir una variable llamada label, label igual a etiqueta PK a label class. Después dentro de la dirección redonda, voy a pasar, voy a poner la etiqueta en ventanas raíz y escribir root Entonces voy a definir fuente, fuente, y voy a asignar, y aquí voy a asignar fuente aérea, Aerial. Después de eso, voy a definir el tamaño de la fuente. Voy a hacer 50. Creo que 50 es bueno para ello. Entonces voy a usar el peso de la fuente. Fuente a ocho, quiero fuente negrita. Negritas. Después de eso, después de eso, voy a agregar cuatro redondos de color, G. G significa cuatro redondos. Cuatro colores redondos, voy a usar el color King. C, Yan. Entonces voy a definir el color de fondo, tipo BG negro. Entonces voy a virar esta etiqueta. Así que escriba el método PAC de punto de etiqueta. Dentro de las rotondas aquí, voy a usar encore property anchor, y voy a colocarla en el centro y expandirla, expandirme, voy a hacerla realidad Voy a establecer este archivo. A continuación, voy a crear una función que va a actualizar continuamente el tiempo en esa etiqueta. Para eso, voy a definir una función, Dave y nuestro nombre de función es actualización, actualización, tiempo de subrayado Actualizar tiempo entonces dentro de la función, aquí, voy a definir tiempo actual, el tiempo de subrayado actual Necesitamos extraer la hora actual. Para eso, tiempo actual igual al tiempo actual igual al punto de tiempo del módulo de tiempo, voy a llamar al método ST RPT, TRT Después dentro de las rotondas, aquí tenemos que pasar el formato En qué formato quiero imprimir la hora. Quiero usar formato 24 horas así atar seno modular H, luego colon. Después seno modular, por minuto, luego colon A, luego seno modular por segundo. Voy a imprimir la hora en ese formato. Básicamente, va a devolver una cadena de tiempo. Después de eso, después de eso, voy a configurar esta vez a esta etiqueta. Para eso, aquí, voy a escribir label label dot config Method, config. Entonces el runbss aquí, quiero configurar la propiedad text, text igual a la hora actual Luego después de imprimir la hora actual, necesitamos actualizar continuamente la hora actual. Para eso, voy a escribir label punto tras método. Etiqueta punto después. Aquí voy a usar mil milisegundos. Quiero decir 1 segundo, y voy a actualizar la hora. Yo llamo a esta función tiempo de actualización. En cada segundo, va a actualizar continuamente la hora, y así es como podemos crear nuestro reloj digital. Ahora, antes de configurar este archivo, necesitamos llamar a esta función update time. Copio el nombre de la función y voy a llamar a esta función debajo del bucle principal. Y voy a poner este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, aquí puedes ver nuestro reloj digital y actualiza continuamente la hora. Espero que ahora te quede claro cómo podemos crear un reloj digital, es muy sencillo crear un reloj digital como este. Gracias por ver este video Estén atentos para nuestro próximo proyecto. 51. Proyecto 4: convertidor de divisas: Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto hoy en este proyecto, vamos a construir este conversor de divisas. Como pueden ver, si paso alguna cantidad como 14, entonces selecciono de la moneda. Supongamos que quiero seleccionar USD. Entonces quiero convertir 14 USD a NR. Entonces si presiono el botón Convertir, como pueden ver, devolverá el monto de acuerdo a la tasa de conversión. la misma manera, si seleccionamos Euro si convierto 14 euro a INR, es devolver el monto. Entonces, a partir de las monedas predefinidas, se puede seleccionar cualquiera de ellas. Y puedes devolver el resultado. En lugar de nar, si quieres devolver Euro de Yen Japonés a Euro, puedes ver el resultado. Esto es lo que hoy vamos a construir. Sin perder el tiempo, comencemos la práctica. Por último, estamos en mi editor de código visual studio. Al principio, voy a importar el módulo Kiner. Aquí voy a escribir import Kinker como TK. Con eso, quiero importar cajas de masas y TTK. Aquí escribo de Kinkerimport, TK y caja de masa A continuación, voy a crear la ventana Kinker. Tipo raíz igual a la clase Tt Tk. Después de eso, voy a asignar un título. Escribo raíz punto título conversor de divisas. A continuación, voy a definir la geometría, tipo suma geometría punto raíz, 400 por 250, y voy a ejecutar el bucle principal, Sumtyp root dot main A continuación, voy a definir un diccionario para el tipo de cambio fijo. Antes de la ventana raíz, aquí, voy a escribir su diccionario creado, y nuestro nombre del diccionario es tipo de cambio. En este diccionario, según el dólar, establecemos otros tipos de cambio. Establecemos otra tasa de cambio, como nuestra primera clave es USD y nuestro primer valor es 1.0 dólar. Según el valor del USD, si lo cambiamos por euro, podemos obtener 0.92 euros la misma manera, si lo convertimos en INR significa rupia, entonces podemos obtener 87.10 rupias la misma manera para la libra esterlina, obtenemos 0.78 libras para el yen japonés, podemos obtener 146 Para este ejemplo, no voy a usar ninguna API para obtener el valor actual del tipo de cambio. Yo uso los tipos de cambio fijos. Ahora a definir la geometría, voy a crear una etiqueta pk dot label, y colocamos esta etiqueta en la ventana raíz y nuestro texto de etiqueta es cantidad, y nuestro color de fuente es área y empaco esta etiqueta. A continuación, voy a tomar un campo de entrada , campo de entrada de cantidad, mocos, cantidad bajo entrada igual a entrada pkt En este campo de entrada, vamos a poner la cantidad, y colocamos este campo de entrada en la ventana raíz y nuestro tamaño de fuente es de 12 píxeles. Entonces voy a empacar este campo de entrada. Escribo cantidad entrada punto PAC Mathod. Después de eso, necesitamos crear un cuadro combinado para seleccionar la moneda. Quiero decir que tenemos que seleccionar nuestra primera moneda. Supongamos que si quiere convertir USD a INR, primero, debe seleccionar el dólar USD. Después primero, es necesario seleccionar el USD. Para eso, de esta lista, de este diccionario, necesitamos seleccionar la clave particular. Primero voy a crear una etiqueta para ese boleto Etiqueta y nuestro texto de etiqueta es de moneda, y etiqueta esta etiqueta. Después de eso, necesitamos crear un cuadro combinado. Voy a definir una variable a partir de Undersco combo. De guión bajo combo igual a TK, aquí utilizo módulo TK, cuadro combinado TTLASST Entonces dentro de la cita, la voy a colocar en una raíz de ventana raíz y ahora para los valores aquí vamos a usar este diccionario. Básicamente aquí, necesitamos mostrar todas las claves de los valores como USD, EUR, INR, GBP y JPY. Para eso, voy a escribir su tipo tipo tipo de cambio, cambio, tipo de cambio, método Keys, éste. método Change rate dot keys te da todas las claves del diccionario. Y como saben, un diccionario no devuelve una lista normal. Devuelvo un objeto de clave directa, pero necesitamos una lista normal. Tenemos que convertirlo en una lista normal. Para eso, voy a usar el método list, LIST, list, y voy a moverlo dentro de las llaves redondas. Déjame mostrarte cómo. Voy a pasar coma. Ahora, va a devolver los elementos exactos de la lista. Ahora es trabajo como lista. A continuación, voy a definir la fuente de este list box. Escribo después de la fuente de coma igual a la aérea y tamaños de fuente a píxel Después de eso, voy a empacar este tipo de caja de coma de combo dot PAC Mathod. Voy a establecer este archivo. Por ahora, si ejecuto este código en mi terminal, ahora se puede ver, primero, tenemos una cantidad de etiqueta, después tenemos un feed de entrada. Aquí vamos a poner la cantidad. Entonces tenemos que seleccionar la moneda de. Puedes ver un cuadro combinado y si lo abro y lo puedes ver en nuestro desplegable, tenemos USD, Euro, INR, Libra británica y Yen japonés Desde aquí, podemos seleccionar nuestra moneda. De la misma manera, necesitamos crear otro cuadro combinado. Por ahora, voy a matar la terminal y voy a seleccionar esta sección y duplicar esa sección y voy a sustituir el texto de la etiqueta. Voy a llegar a moneda y también voy a hacerlo a combo a combo, y no necesitamos cambiar nada más. A continuación, voy a definir una función y nuestro nombre de función es convertir moneda. Aquí voy a escribir el nombre de la función, Dave y nuestro nombre de función es convertir moneda. Dentro de este y dentro de este, voy a escribir pass, y voy a configurar este archivo. Ahora voy a definir un botón, botón que va a activar la función convertir moneda. Entonces aquí, voy a definir un botón botón de punto TKClass y presiono este botón en una ventana raíz y nuestro botón de texto es Convertir Coman este método, convertir moneda Y nuestro texto de botón es Aéreo y el tamaño es 12, le puse un color de fondo a este botón que es azul claro y luego empaco este botón y quiero sub este archivo. Después de eso, voy a crear una etiqueta que va a imprimir el resultado. Para eso, Hemot etiqueta de resultado igual a etiqueta TK y lo colocamos en una ventana raíz y por ahora nuestro texto de etiqueta está en blanco Nosotros no ponemos nada, entonces voy a empacar esta etiqueta. Así que aquí, voy a escribir result label got PAC method, y voy a establecer este archivo. Entonces cada vez que presionamos el botón, entonces entonces llamas esta función convertir moneda y va a convertir la moneda e imprime el valor en esa etiqueta. Básicamente, en esa función, vamos a configurar esta etiqueta para imprimir el valor. Así que vamos a saltar a la función de convertir moneda. Pero antes, te voy a mostrar cómo se ve nuestra interfaz. Entonces, si subrayo en mi terminal, así es como se ve nuestra interfaz Primero, tenemos que pasar el monto luego tenemos que seleccionar la moneda. Supongamos que si selecciono euro y quiero convertir el euro en INR. Entonces después de pasar la moneda, supongamos dos, tres, cuatro, si presiono convertir, va a mostrar el valor, el resultado en esa etiqueta por ahora, nuestra etiqueta está en blanco. Cuando presiono el botón de convertir, va a imprimir la renuncia Volvamos a la función. Convertir moneda. Ahora, al principio dentro de la función, voy a quitar pase y después voy a usar Tribloc TRY tran Luego dentro del tribloque al principio, necesitamos obtener el valor del campo de entrada, el campo de entrada Entonces voy a definir una variable y nuestra variable es amount, amount equal to amount entry dot gate method. Usando el método de puerta de puntos, obtenemos la entrada de cantidad. Supongamos que si pasamos algo, supongamos 2.35, en ese caso, nuestra entrada de cantidad sería una variable flotante Para resolver el problema, aquí utilizamos el método float. Ahora lo va a convertir en un peso flotante. Entonces, para obtener el monto del campo de entrada, necesitamos extraer el de moneda del cuadro combinado. Moneda Heraldinsco igual a del método de puerta de punto underscoombo Sea cual sea el valor que seleccionemos del cuadro combinado, obtenemos el valor y lo guardamos en esa variable desde la moneda. De la misma manera, necesitamos extraer dos divisas. Así que voy a escribir dos divisas igual a dos subrayado combo método de puerta de punto Después de obtener el de la moneda, de la misma manera, necesitamos obtener el cuando extraemos las dos divisas del cuadro combinado de dos. Ahora bien, si existen la moneda from y dos monedas, entonces escribo E de moneda y dos divisas, entonces dentro de esta condición IP, necesitamos convertir la cantidad. Al principio, necesitamos convertir esta moneda a USD. Si ambas monedas existen, entonces quiero convertirla en monto en USD. Entonces, para escribir USD underscore monto. Cantidad en dólares igual a voy a dividir cantidad. Voy a dividir cantidad dividida por duro, voy a pasar el tipo de cambio, tipos de cambio, y dentro del cuadrado versus, voy a pasar de moneda de moneda. A continuación, necesitamos convertir la moneda USD en moneda de destino. Para eso, voy a definir otra variable convertirla. Conviértelo igual al monto de USD USD, multiplique por las tasas existentes dentro de la ronda versus solo para pasar el valor de dos divisas. Después de eso, necesitamos imprimir el valor convertido en la etiqueta. Para eso, necesitamos configurar la etiqueta. Aquí voy a escribir result label dot configure config. Después dentro de los vestidos redondos y quiero configurar la opción de texto. Texto, texto igual a, voy a usar astring, luego dentro de los códigos dobles y dentro de los vestidos de Cali, primero, voy a imprimir el monto y el de moneda Igual a, entonces voy a imprimir el valor convertido. Entonces voy a imprimir la cantidad convertida. Dentro de la Carlss voy a escribir, convertirla, convertida variable, pero hay un problema Si se convierte devolverá un número dechim como 83.1 0555, entonces no quiero imprimir esta cantidad de número Quiero imprimir solo dos dígitos tras punto tras punto decimal. Para eso, necesitamos convertir este valor de coma flotante. Para eso, para eso, necesitamos trabajar en este valor de coma flotante. Vamos a usar especificador de formato. Aquí, después de convertirlo, voy a escribir colon.2a, punto dos representan dos jugadas de Dhimil y A muestran el número de punto fijo Después de eso, quiero imprimir dentro de la Calibra dice dos divisas, dos bajo moneda scoe, y voy a establecer este archivo Después de eso, necesitamos manejar las partes s dentro del s doc, quiero mostrar un mensaje de error si no funciona perfectamente. Para eso, voy a escribir líos box dot show error y es error Window Por favor, seleccione monedas. Si no selecciona ninguna de las monedas como dos divisas, lo contrario forman moneda, se va a lanzar este mensaje de error. También en nuestro bloque except, necesitamos manejar el error. Déjame mostrarte excepto error de valor. Entonces dentro de este bloque excepto, quiero mostrar mensaje de error. Aquí, su tipo, cuadro de mensaje punto mostrar mensaje de error y nuestro mensaje de error es introducir una cantidad válida. Si no ingresamos una cantidad válida, si pasamos algún carácter como ABCD, arrojará un error Ahora ya casi terminamos. Vamos a configurar el archivo y ejecutar este código en nuestra terminal. Entonces después de configurar el archivo, voy a ejecutar este código en mi terminal, y como pueden ver, y esta es nuestra aplicación de moneda convertida. Primero, voy a ingresar monto 12, y quiero convertirlo en USD dos INR. Si presiono el botón Convertir, como puede ver, está escrito el valor, de acuerdo a la tasa de cambio. la misma manera, si quieres convertirlo en libra esterlina, entonces presiona convertir, puedes ver el valor. Ahora, en vez de pasar 12, si pasamos una, ¿entonces qué? Entonces si presiono el botón convertir, va a arrojar un error. Ingresa cantidad válida porque no es una cantidad válida. Ahora bien, si paso 13 y convierto esta cantidad a Iona a libra esterlina, se puede ver el resultado Nuestro conversor de divisas funciona muy bien. Espero que ahora te quede claro. Gracias por ver este video, estén atentos para nuestro próximo estudio. 52. Proyecto 5: convertidor de unidades: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto, y hoy en este proyecto, vamos a crear una GUI de convertidor de unidades. Como puedes ver en mi pantalla, creamos este convertidor de unidad convertidora, y aquí tenemos múltiples opciones. Primero, tenemos que seleccionar la categoría. Quiero decir si abro este desplegable, ahora se puede ver que tenemos que correr dos categoría longitud y temperatura. Si seleccionamos longitud, entonces en nuestro cuadro combinado firme, por defecto, selecciona metro, y en nuestro cuadro combinado dos, por defecto, es kilómetro selecto. Si pasamos algún valor, va a convertir meta dos kilómetros. Yo paso 2000 metro, luego presiono en convertir. Ahora se puede ver que va a mostrar el resultado en esa porción, en esa etiqueta. Si presiono el botón convertir, como pueden ver, 2000 metros iguales a dos kilómetros. la misma manera, si conviertes 2000 ing a kilómetro y presionas convertir, ahora puedes ver 2000 pulgadas Si convierto 2000 pulgadas a kilómetro, es pre 0.05 kilómetro. Si convierte 2000 pulgadas a 2000 pies y luego y luego presiona este botón, puede ver los diferentes resultados. 2000 pulgadas igual a 166 moneda 67 pies. Puede convertir de cualquier unidad a cualquier unidad. Pero si seleccionamos la categoría dos, supongamos que si descargo esta página y selecciono la temperatura, ahora puedes ver en nuestro cuadro combinado, tenemos diferentes resultados como Celsius, Fahrenit y Ahora tenemos unidades de temperatura. Si convierto 100 grados Celsius a 100 grados Fahrenheit, puedes ver 100 grados Celsius iguales a 212.00 Si lo hago Kelvin y presiono el botón de conversión, se puede ver 100 grados Celsius igual a 100 Kelvin Esto es lo que vamos a construir hoy en este proyecto y entender cómo nuestras lógicas están trabajando detrás en él Sin perder el tiempo, comencemos la práctica. 53. Crea la estructura y configura la lógica para mostrar las unidades en la combobox: Como pueden ver, estamos en mi editor de código de salt studio. Al principio, necesitamos importar el módulo, los módulos necesarios. Primero, voy a importar el módulo Kinter. Entonces, para escribir, ingrese Kinter como TK. Después de eso, voy a importar caja de masas. Como voy a importar TK. Así que para escribir de Kinteriput TK y caja de masas. Entonces entonces voy a montar el GY. Para eso, voy a crear una ventana raíz, root igual a t punto T class. Después de eso, voy a asignar un título. Aquí voy a escribir root dot title Conversor de unidades. Y luego voy a establecer la geometría, geometría de punto raíz, 400 píxeles por 250 píxeles y por fin, voy a ejecutar un mainloop Escribo root dot mainloop. Dentro de nuestra aplicación GUI al principio, necesitamos crear una selección de categoría. Para eso, vamos a usar Comvo box. Pero antes voy a definir un nivel para eso. Entonces escribo Tt, tt dot Label, colocamos en una ventana raíz y nuestro texto de etiqueta es seleccionar categoría. Empaque esta etiqueta. Después de eso , aquí, voy a crear un cuadro combinado, combo de categoría. Para crear el cuadro combinado, voy a definir un combo de categoría variable. Combo de categoría igual a ttk punto combobox. Colocamos este cuadro combinado en una ventana raíz y nuestro valor de combobox es longitud y temperatura, y aquí asignamos estado de solo lectura No podemos escribir nada sin estos dos valores. Entonces voy a empacar este cuadro combinado tipo categoría punto combo punto PAC Mathod Ahora después de empacar este cuadro combinado, voy a configurar este archivo y ejecutar este código en mi terminal. Después de ejecutar este código, aquí puedes ver nuestro nivel, y este es nuestro cuadro combinado. Ahora, si hago clic en este desplegable, se puede ver el valor total de dos, longitud y temperatura. Se puede seleccionar la categoría. Si seleccionamos longitud, entonces en nuestras unidades, mostró diferentes unidades como centímetro, metro, kilómetro, etcétera Si seleccionamos temperatura, entonces en nuestra sección de unidades, va a mostrar Kelvin, Fahrenheit Para ejecutarlo en nuestro cuadro combinado, necesitamos asignar una función con la ayuda de bind. Con la ayuda de bind, cada vez que seleccionamos alguno de los valores, quiero decir cualquier valor combobox seleccionado, entonces quiero activar una función Para eso, aquí, voy a escribir combo categoría combo punto bind método. Dentro del doble curso, aquí utilizamos este evento, combo seleccionado. Siempre que seleccionemos algún elemento de este cuadro combinado, entonces va a activar esta función actualizar unidades, y voy a definir la función ahora mismo. Aquí voy a definir la función y nuestro nombre de función es Dave actualizar unidades. Por ahora en esta función, voy a escribir pass. Es función basada en eventos, así que voy a pasar evento aquí en nuestro parámetro. Voy a establecer este archivo. Después de eso, voy a crear la selección de desde a unidad. Tecleo un solo comando de fin a selección de unidad y aquí, voy a crear un marco para las unidades. Entonces para escribir, escribir, unidades de marco iguales a TTGTFrame y colocamos el marco dentro de la ventana raíz también voy a empacar este marco, unidad de marco paquete de puntos Mtod Después de eso, después de eso, dentro de la unidad de marco, voy a definir un total de dos cuadro combinado con etiqueta. Aquí voy a mostrar las unidades de unidad y a unidad. Déjame mostrarte. Entonces primero voy a crear una etiqueta, tipo S, etiqueta Ttgt, y voy a colocar la etiqueta dentro de la unidad de marco y nuestros textos de etiqueta de Luego, usando el método de cuadrícula, empacamos esta etiqueta. Colocamos esta etiqueta en el número de fila cero y el número de columna cero. Después de eso, voy a crear un combobox. Voy a escribir de unidad combo igual a ttk punto combo box, y colocamos este cuadro combinado dentro de la unidad de marco en este marco y aquí no le pasamos ningún valor a esto de unidad, dijimos el estado leído solo porque vamos a pasar los valores de nuestra función, actualizar la función de unidad De acuerdo a la selección como de otra manera la temperatura, vamos a pasar el valor. Entonces voy a colocar esto de unidad combo. Para eso, voy a conducir desde el método de lectura de punto combinado de unidad y lo colocamos en el número de fila cero y la columna número uno. Y voy a poner este archivo. Después de configurar este archivo, si ejecuto mi código en mi terminal, así es como se ve. Ahora, al lado de P de la misma manera, voy a crear otro combobox y etiqueta para dos unidades Aquí, primero, voy a crear la etiqueta, etiqueta punto ttk, y esta vez, voy a escribir etiqueta dos y colocar la etiqueta en la fila número cero y la columna número dos Después de eso, voy a crear el cuadro combinado. Para el cuadro combinado, nuestro nombre de variable es combo de dos unidades, igual a t punto combobox aquí voy a colocar este cuadro combinado dentro del marco y las estadísticas de solo lectura Después de eso, debe colocar este cuadro combinado usando el método de calificación. Aquí, voy a empatar dos unidades undersco combo punto GED, lo colocamos en el número cero y la columna número tres, y además agregamos algo de relleno en Xxs Después de establecer este archivo, si codifico en mi terminal, así es como se veía. Ahora por debajo de estos dos combobox, aquí voy a tomar campo de entrada para el vdu que ingresa por el usuario. Hagámoslo. Para matar esa ventana y aquí voy a definir un campo de entrada. Para crear primero el campo de entrada, voy a definir una etiqueta de punto Tt y colocamos la etiqueta en una ventana raíz y nuestro valor de nivel es EnterValueO nivel toma este Entonces etiqueta esta etiqueta. Ahora voy a crear el campo de entrada. Para eso, voy a atar valor de entrada igual a tt entrada de punto y colocamos la entrada en una ventana raíz. Después de eso, voy a pag este campo de entrada, algún tipo de entrada de valor punto método PAC. A continuación, necesitamos crear un botón que vaya a comandar una función y esa función vaya a convertir nuestras unidades. Para eso, aquí, voy a definir un botón, y nuestro nombre de botón es convertir botón. Convertir botón igual a la clase de botón Tttgtd, y lo colocamos en una raíz en y nuestro botón toma este convertir y comandar esa función, convertir, luego empaco este Como puedes ver, no definimos nuestra función, así que voy a definir esa función, así que copio el nombre de la función, y aquí voy a definir la función. Voy a escribir DF y nuestro nombre de función es convertir dentro de esa función y dentro de esa función por ahora, voy a escribir pass. Ahora, cada vez que presiono el botón, va a llamar a la función de conversión y convertir la función va a convertir nuestras unidades. Ahora necesitamos mostrar el resultado. Para eso, vamos a usar una etiqueta. Aquí escribo etiqueta de resultado igual a etiqueta T, y colocamos esta etiqueta en una ventana raíz y nuestro resultado de texto aparecerá aquí y nuestra fuente es Aerial 12 pixel y negrita Fon Después empaco esta etiqueta. Entonces cada vez que devuelva el resultado, va a configurar la etiqueta de resultado y va a reemplazar el texto del resultado con el resultado. Ahora, vamos a trabajar en Actualizar método de unidad. Entonces voy a saltar en esa sección de actualización de la unidad. Dentro de ese método de actualización de unidades, al principio, necesitamos extraer la categoría. Necesitamos extraer la categoría del cuadro combinado entre longitud y temperatura. Así que estoy tipo categoría igual a la categoría combo punto método de puerta. Entonces de este cuadro combinado, obtenemos la categoría. Podría ser largo, de lo contrario temperatura. Entonces dentro de él, voy a establecer una condición IP. Si categoría igual a igual a longitud, entonces dentro de esta categoría, voy a establecer las unidades, y voy a crear una lista de unidades. Yo defino una variable unidades y es una lista y dentro de la lista, tenemos metros kilómetros, centímetro, inch fit, y mil en condición ellip algún tipo categoría ZIP igual a igual a temperatura, luego dentro de la condición ellip, aquí voy a decir, aquí voy a poner las unidades Entonces nuestra lista de unidades se convierten en Celsius Farenita y Kelvin. Como. En nuestra parte s, Como dentro del bloque s, voy a pasar la lista de unidades vacías. Unidades iguales a lista vacía. A continuación, necesitamos establecer las unidades, estas unidades a la caja combo, como de unidad combo y dos unidades comp. Voy a escribir después del bloque fuera de la condición s del combo de unidades, quiero establecer los valores iguales a unidades. la misma manera para el combo de dos unidades, combo de dos unidades, voy a insertar el cli dentro los valores cuadrados iguales a, voy a establecer las unidades Entonces voy a configurar este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal, ahora, puedes ver si selecciono la categoría como longitud, entonces en nuestra unidad from, ahora tenemos un desplegable. Tenemos desplegable de unidades de longitud como metro, kilómetro, centímetro, pulgada, pies mil, etcétera De una manera a la misma manera, si abres dos combo box, ahora puedes ver ahora puedes ver todas las unidades de la longitud. la misma manera, si seleccionamos temperatura, ahora puedes ver que tenemos unidades de temperatura en nuestro cuadro combinado. Pero cuando selecciono mi categoría, como pueden ver, nuestros campos from y dos combobox están vacíos, pero no los quiero Quiero seleccionar el valor predeterminado. Entonces para eso para las cuatro unidades aquí para la de unidad, aquí, voy a morir de unidad de unidad undersce actual, voy a seleccionar el índice cero la misma manera para las dos unidades para el combo de dos unidades, voy a seleccionar el índice número uno. Ahora para configurar este archivo si vuelvo a ejecutar este código y si selecciono algún valor, cualquier categoría como longitud, ahora puedes ver por defecto es seleccionar metro porque metro está en mi índice cero, y en nuestro cuadro combinado de dos, es seleccionar kilómetro porque kilómetro está en nuestro primer índice, y sabes que nuestro índice de lista empieza desde cero. Por eso selecciona estas dos unidades, y funcionará para las mismas si seleccionamos temperatura. Ahora seleccionas Celsius en nuestra unidad from y en nuestros dos combobox, selecciona fahrenheit Esta es la primera parte de este tutorial. En la siguiente parte de este tutorial, vamos a trabajar en convertir la función. Además, es necesario crear otras dos funciones para convertir la temperatura y convertir la longitud. Gracias por ver este video, mantente atento para la siguiente parte de este tutorial. 54. Trabajar en el método de conversión: Entonces esta es la segunda parte de este tutorial, y en esa sección, vamos a trabajar en la lógica de conversión. Quiero decir, vamos a trabajar en esta función, convertir. Al principio, voy a eliminar la palabra clave pass, y voy a usar Tri Block, inténtalo. Entonces voy a teclear exit excepto bloque. En nuestro bloque de salida, voy a escribir value error value error, y voy a mostrar un mensaje. Quiero mostrar un mensaje de advertencia. Aquí voy a escribir cuadro de mensaje punto Mostrar error Método de entrada inválida. Por favor, introduzca un valor numérico. Ahora, al principio, dentro del tri bloque, voy a conseguir el valor. Quiero decir cualquier valor que pase el usuario en ese campo de entrada, este campo de entrada. Entonces necesitamos extraer el valor de la variable enrfield Así que aquí estoy escriba un valor variable, valor igual al punto de entrada método Gate. Usando eso podemos obtener el valor de la variable y lo convertimos en un número flotante. De la misma manera, voy a extraer la categoría. A partir de esta variable, combo de categoría. Para eso, voy a definir otra variable, categoría igual a categoría underscoe combo dot gate método A continuación, necesitamos extraer el de la unidad y también extraer las dos unidades. Aquí voy a escribir la variable name from unit, igual a from unit underscoe combo dot gate method Entonces voy a extraer dos unidades de valor. Del combo de dos unidades, voy a extraer el valor y decir bit a esta variable. A continuación, voy a establecer condición I dentro este triblog I categoría igual a igual a longitud, si la categoría es longitud, entonces quiero llamar a una función En nuestra variable resultado, resultado resultado igual a aquí, quiero llamar a una función, y nuestro nombre de función es convertir longitud. Voy a escribir convertir longitud y dentro del latón redondo, luego dentro del latón redondo, como argumento, voy a tomar valor, el valor exacto, entonces voy a tomar el de unidad y voy a tomar dos unidad a unidad. Y también necesitamos definir esa función. Así que voy a copiar el nombre de la función convertir longitud y después de eso, después del bloque except, Hemotye dio nuestra función nombre convertir longitud como parámetro, voy a pasar valor luego de unidad y a unidad Entonces dentro de esta función por ahora, voy a escribir pass. Voy a crear esta función más adelante. Ahora voy a escribir categoría I, igual a igual a dentro de los códigos Dogon, voy a escribir temperatura, luego dentro de la condición Lip Entonces voy a llamar a otra función, que es convertir temperatura. Estoy tipo resultado igual a convertir temperatura, y aquí voy a pasar los mismos parámetros. A continuación, necesitamos definir esa función, así que voy a copiar el nombre de la función aquí voy a escribir. Después de eso, Dave, nuestro nombre de función es convertir temperatura, y como argumento, voy a tomar valor de unidad y a unidad. Copio esa sección y la voy a pegar aquí. Por ahora dentro de esta función, voy a escribir pass. Voy a crearlo más tarde. Y voy a poner este archivo. Entonces en nuestro S doc tipo s en cambio el S doc, quiero mostrar mensaje de error. Quiero imprimir Quiero mostrar un mensaje de error. Escriba mensaje cuadro punto Mostrar error y el nombre de nuestra ventana es error, por favor seleccione una categoría válida. Si no seleccionas una categoría válida, entonces va a devolver el error. Con eso, quiero regresar. Regresar Quiero regresar aquí quiero devolver el resultado. Quiero imprimir el resultado en nuestra etiqueta de resultados en esa variable. Necesitamos configurar esta variable de etiqueta de resultado. Aquí voy a escribir result label dot Config, y voy a configurar el texto. Yo uso Estring y primero, voy a pasar el valor Entonces de unidad e igual a resultado, aquí uso colon.2f, quiero decir, es media un punto de plato, quiero imprimir solo dos Quiero imprimir sólo dos dígitos. Por eso lo uso. Primero, va a imprimir el valor. Si pasamos dos, entonces va a imprimir dos. Entonces va a imprimir el de unidad. Si pasamos dos y seleccionamos kilómetro, entonces va a imprimir dos kilómetros. Ahora, vamos a saltar a la función convert length. Así que pase remoto y aquí voy a teclear. Él básicamente aquí para crear diccionario y nuestro nombre de diccionario es unidades UNIDADES iguales a, voy a hacer pequeñas unidades de caracteres iguales a aquí, voy a imprimir un diccionario. En cambio el Cali res ya me sugiere los valores. Voy a imprimir los valores metro 110, kilómetro 1,000, centímetro 0.0 1 " 0.0 254 pies y mil. Ahora, vamos a tratar de entender las unidades, lo que he hecho aquí, nuestra primera clave representan metro. Aquí, 1 metro igual a 1 metro, luego 1 kilómetro igual a 1,000 metro. A continuación, 1 centímetro igual a 0.0 1 metro. A continuación, una inchy igual a 0.025 metros. A continuación, tenemos 1 pie, 1 pie igual a 0.3 048 metro Entonces tenemos milla 1 milla igual a 1609 0.34 metro. Básicamente, convertimos cada unidad en metros de peso. Utiliza medidor como unidad de referencia universal. A continuación, necesitamos convertir la entrada del usuario en un medidor. Para eso, voy a definir una variable. Entonces aquí voy a escribir valor en metros igual a, voy a pasar el valor de usuario aquí, luego voy a multiplicar con unidades unidades punto de Unidad. Cualquiera que sea la unidad que utilice selec de combobox, pasamos aquí desde el diccionario de unidades, accedemos a la unidad accedemos a la Supongamos usar seleccionar centímetro. Entonces va a multiplicar el valor, supongamos que el usuario pasa siete aquí. Entonces se va a multiplicar siete con un valor de 0.01. Básicamente convertimos el valor en metro. Después de eso, necesitamos convertir el valor del medidor en unidad objetivo, sea cual sea el valor que los usuarios seleccionen. En nuestro cuadro combinado de dos. Para eso, voy a devolver valor en metros divididos por unidades, y quiero acceder a dos unidades. En nuestro cuadro combinado de dos, si los usuarios seleccionan millas, entonces va a dividir el valor del medidor por el valor de la milla, y va a devolver el resultado. Entonces, para configurar este archivo y vamos a comprobarlo. ¿Funcionan correctamente o no? Alguien que presione el botón Ejecutar. Y primero, voy a seleccionar la categoría que es tarde después de seleccionar la categoría, vamos a saltar a este bloque, esta condición p, y va a activar esta función, convertir longitud. Y en nuestra función de longitud, aquí convertimos la lente en metro, luego devolvemos el resultado original. Entonces voy a pasar el valor ingresado valor y voy a pasar 12 metros y quiero convertirlo en mil. De lo contrario, por ahora, voy a convertirlo en kilómetro. Si presiono Convertir, como puede ver, muestra el resultado. Si conviertes 12 metros en kilómetro, entonces va a regresar 0.0 1 kilómetro. Pero si seleccionamos 12 kilómetros y lo voy a convertir en amargo, en ese caso, va a devolver 12 mil metros, 12 kilómetros igual a mil metros, nuestro método de convertir longitud funciona perfectamente Ahora vamos a trabajar en la temperatura. Voy a matar esta terminal y voy a quitar pase aquí, voy a escribir condición IP. Si de unidad igual a igual a C, si seleccionamos Celsius, entonces dentro de esta condición IP, voy a usar otra condición IP. Si seleccionamos Celsius, entonces dentro de esta condición P, voy a usar si dos unidades iguales a igual a fahrenheit, entonces quiero volver aquí voy a calcular Celsius a Voy a escribir valor, y voy a multiplicar el valor por 99/5, y voy a sumar 32 hasta ocho Seno de adición 32. Aquí convertimos el valor Celsius a Fahrenheit. Entonces en nuestra condición ZIP, si LC si dos unidades, igual a igual a, selecciono Kelvin K, luego dentro de la condición Lip, voy a regresar, y aquí voy a pasar valor y voy a agregar valor con 273.15 No es, es LCs L dos unidades iguales a igual a K, entonces quiero convertirlo en Kelvin Aquí convierto el valor Celsius a Kelvin y tenemos que hacer lo mismo por Fahrenheit Voy a fosforar este proceso y hemotipo de unidad a unidad, igual a igual a si quiero decir fahrenheit, luego dentro del bloque p, voy a usar Si P dos unidades iguales a igual a Celsius C, C, el interior de la condición ip entonces dentro de la condición IP, voy a devolver los valores de Fahrenheit. Voy a t devolver valor -32, multiplicar con 5/9. Va a convertir el valor de Fahrenheit en Celsius. Entonces L dos unidad igual a igual a Kelvin, si los usuarios seleccionan Kelvin, luego encendido para convertirlo Fahrenheit a A t valor de retorno -32, multiplique con 5/9 más Aquí convertimos el valor fahrenit al kelvin con la ayuda Va a devolver el valor kelvin después de pasar el valor fahrenit Ahora, tenemos que hacer lo mismo para Kelvin a t s de unidad igual a igual a K, Kelvin, luego dentro del bloque LC, aquí voy a seleccionar otra condición Si dos unidades iguales a igual a Celsius, entonces dentro de la condición, entonces necesita convertir el valor Kelvin en Celsius Para eso, voy a atar retorno valor de retorno -273.15, L LC seleccionan el Fahrenheit en unidad En ese caso, quiero regresar. Quiero devolver el valor fahrenheit. Necesitamos convertir el valor Kelvin en fahrenheit. Aquí convertimos fahrenheit vía Celsius. Por eso utilizo esta fórmula. Sé que en tu clase de ciencias, ya haces eso de matemáticas. Entonces no voy a explicar cómo es el trabajo. Entonces tenemos que devolver retorno, tenemos que devolver el valor, y quiero establecer el archivo. Después de configurar el archivo, si ejecuto este código en mi terminal y selecciono la categoría, esta vez voy a establecer la temperatura y voy a convertir a Celsius a Fahrenheit Aquí voy a pasar 100 grados centígrados. Y si lo convierto en Fahrenheit, como pueden ver, 100 grados Celsius igual a 212 grados Si lo hago Cavi en, ahora se puede ver 100 grados centígrados iguales a 100 kelvin Pero si convierto 100 kelvin a 100 Fahrenheit, entonces pas convert, puede ver 100 Kelvin igual a -279.67 Fahrenheit. Así es como construimos nuestro convertidor de unidades. Espero que disfrutes de este proceso. Gracias por ver este video, estén atentos para nuestro próximo proyecto. 55. Iniciar sesión desde la GUI uso: Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto de Quinta GUI. Hoy en este proyecto, vamos a crear un inicio de sesión y registro desde, y vamos a almacenar el inicio de sesión y la contraseña en un JSON. Además, vamos a utilizar el método de hash de contraseña para guardar la contraseña Cualquiera no puede extraer la contraseña fácilmente. Ahora hablemos de su característica. Si hablo de su característica, necesitamos crear registro, crear nuevo usuario y nombre de usuario y contraseña almacenados en un JSON. Entonces necesitamos crear el inicio de sesión. Aquí, necesitamos verificar la credencial con los datos almacenados Luego viene la validación. Necesitamos validarlo para evitar que se duplique el nombre de usuario y los campos en blanco, etcétera Por fin, necesitamos mostrar los comentarios. Necesitamos mostrar mensajes de éxito o error con messagebox Ahora, hablemos de la configuración del archivo. Primero, necesitamos crear el archivo Python. En nuestro caso, voy a crear app punto pi. Aquí vamos a escribir el código GUI principal. Entonces necesitamos crear un archivo de base de datos usuario punto código JSON va a crear este archivo automáticamente si no existe. Comencemos la codificación y veamos cómo podemos crearla. Como puedes ver, estamos en mi editor de código de estudio de resultados. Al principio, voy a importar módulo Kiner, tipo de entrada Kinter como TK Después de eso, después de eso para mostrar los mensajes, voy a importar messagebox de Kinter So para escribir desde Kinteriport para escribir desde Entonces necesitamos importar el módulo JSON para escribir Import JSn y después de eso, voy a importar el módulo OS Ahora definamos el inter GY. Al principio, voy a escribir un solo comando. Aquí vamos a crear el Kint GY. Al principio, voy a crear la ventana raíz. Voy a escribir root igual a t punto T class. Entonces voy a asignar título aquí voy a asignar un título a esta ventana. Voy a escribir root dot title está en las prensas redondas iniciar sesión y registrarse desde. Después de eso, voy a establecer la geometría de esta ventana. Voy a escribir geometría de raíz 300 por 250 píxeles. Entonces voy a asignar un color de fondo a la ventana raíz. Voy a escribir root dot config Method. Después dentro del latón redondo, voy a usar BG, color de fondo, BG igual dos, dentro de los códigos dobles. Voy a pasar un código de color. Aquí quiero aplicar color grisáceo, someti Tiene etiqueta e2e2 EP dos, Ahora, vamos a crear el bucle medio. Aquí estoy ti root, el mainloop. Entonces voy a crear los magos. Necesitamos estos asistentes para tomar las entradas, como nombre de usuario contraseña, y necesitamos crear dos botones para iniciar sesión e inscribirse Aquí voy a crear un posterior. Voy a escribir t dot label y colocamos esta etiqueta dentro de la ventana raíz y nuestro texto de etiqueta es nombre de usuario. Aquí dijimos el mismo color de fondo a esta etiqueta, y empaco esta etiqueta. También, quiero tomar un campo de entrada. Para almacenar el campo de entrada, aquí, voy a tomar una variable y nuestro nombre de variable es nombre de usuario de entrada. Nombre de usuario de entrada igual a entrada tikt y colocamos este campo de entrada dentro de la ventana raíz y aquí establecemos 25 Después de eso, necesitamos empacar este campo de entrada. Para empacar este campo de entrada, voy a escribir el usuario de entrada variable punto Pack Mathod la misma manera, voy a tomar otro campo de entrada para contraseña. Primero creo la etiqueta, luego para crear la etiqueta. Aquí voy a tomar el campo de entrada y nuestra variable de entrada es la contraseña de entrada, y colocamos este enrfield en una ventana raíz en vez de mostrar personajes, quiero mostrar estas estrellas Va a convertir al personaje en estrella. Después de eso, voy a empacar el campo de entrada. Contraseña de entrada método dot peg. Entonces voy a tomar dos botones. Un botón es para registrarse y otro botón es para iniciar sesión. Al principio, voy a crear el botón de inicio de sesión, pero antes voy a iniciar WR Y aquí voy a escribir botón de ticket y colocaré el botón igual a ventana raíz, y nuestro botón texto este inicio de sesión, y va a comandar este método, iniciar sesión y establecer con diez píxeles y color de fondo este color verde y para color de fondo el color blanco. Empaque este método. Pad, y también voy a agregar padding en Y xs, pad Y, voy a asignar diez pixeles, de lo contrario cinco pixeles. Entonces duplico este botón. Después de duplicar este botón, este botón es para registrarse y va a comandar la función de registro. Repuesto login para registrarte. Después de eso, voy a definir la función. Primero, voy a definir la función de registro. Copio el nombre de la función y aquí y aquí, voy a escribir Dave Nuestro nombre de función es registrarse dentro de esta función, voy a escribir pass. Por ahora, voy a escribir pase para evitar el. Entonces voy a duplicar esta función y voy a ponerle nombre login. Copo el nombre de la función login, y voy a reemplazar el registro con login. Y voy a poner este archivo. Después de configurar este archivo, si ejecuto este código en mi terminal, veamos cómo se ve nuestra interfaz. Después de configurar este archivo, si ejecuto código en mi terminal, así es como se ve nuestro formulario de registro e inicio de sesión. Primero, tenemos el nivel de nombre de usuario, luego tenemos el campo de entrada del nombre de usuario, luego tenemos una etiqueta de contraseña, y tenemos campo de entrada de contraseña, luego botón de inicio de sesión y botón de registro. Esta es la primera parte de este tutorial y a la misma parte de este tutorial, vamos a trabajar en las funciones. Gracias por ver este video estadio para nuestro próximo tutorial. 56. Registro de sesión, parte 2: Me alegro de verlos de vuelta, chicos. Esta es la segunda parte de este tutorial, y en esa sección, vamos a crear el JSON. Pero primero, voy a definir una variable y nuestra variable es archivo de usuario. Archivo de usuario igual a aquí dentro de los códigos dobles, voy a proporcionar una ruta de archivo, ruta archivo del JSON. Dentro de los códigos dobles, voy a escribir users dot JSON. Como puedes ver en mi directorio de trabajo actual, no hay JSON que necesitemos para crear ese archivo JSON usando condición IP. Voy a escribir un solo comando, crear archivo IP no existe. Entonces voy a establecer condición IP. Si no, los puntos de ruta de puntos de los puntos existen. Después dentro de la rotonda voy a pasar archivo de usuario. Si este archivo de usuario no existe en mi directorio de trabajo actual, entonces dentro del entonces dentro de la condición IP, quiero abrir este tipo con abierto dentro del archivo de usuario de roundre, archivo de usuario y quiero abrir este archivo en modo W. Dentro de los dioses individuales, voy a escribir modo de escritura, W como simio puntero de archivo. Entonces dentro de esta función abierta, voy a escribir Json dot dump Mthod dump Dentro de los rounddresses, voy a pasar el diccionario Nt, y luego nuestro puntero de archivo, F. Usando este método JSON tonto aquí escribimos un objeto JSON vacío Voy a actuar como base de datos de corte para almacenar nombre de usuario y contraseña. Ahora bien, si configuro este archivo y ejecuto este código en mi terminal, ahora se puede ver en mi trabajo actual en directorio, se creó JSON punto JSON. Se va a crear el JSON si el archivo no existe en mi directorio. De lo contrario, no va a crear. A continuación, voy a trabajar en la función de registro. Dentro de la función de registro, voy a eliminar la palabra clave pass y primero primero, voy a tomar la entrada. Quiero decir, necesitamos tomar entrada desde el nombre de usuario, también la contraseña. Aquí voy a definir total dos variables. Para el nombre de usuario, voy a escribir nombre de usuario igual al nombre de usuario de entrada punto método Gate. Usando el método de puerta, podemos obtener el valor del campo de entrada y usando la tira de puntos y usando el método de tira, podemos eliminar los espacios adicionales desde el final y de otra manera desde el inicio. De la misma manera, voy a tomar otra contraseña. Entonces voy a definir otra variable, contraseña igual a entrada underscoe password método dot gate Y ahora necesitamos verificar el campo de entrada usando condición IP. Si nuestro campo de entrada como nombre de usuario y contraseña está vacío, entonces vamos a mostrar un mensaje de error. Para eso, voy a establecer una condición IP, algún tipo. Si no, nombre de usuario o no contraseña, entonces dentro de esta condición EIP, quiero mostrar este mensaje de error Entonces voy a escribir messagebox dot herror y nuestro nombre de ventana es r. Todos los campos son obligatorios. Con eso, quiero devolverlo. Regreso. Voy a pasar esta palabra clave return. Flecha use return porque después de mostrar el mensaje de error, necesitamos detener la ejecución. Por eso necesitamos usar esta palabra clave return. A continuación, necesitamos crear un método que vaya a cargar los datos del adyacenFle Para eso, voy a definir un método. Voy a definir una función y nuestro nombre de función es Dave cargar usuario dentro de esta función, voy a escribir con open with open. Dentro del método open, voy a pasar el archivo de usuario, archivo de usuario o ruta de archivo JSON, y voy a abrir este archivo en modo de lectura. Dentro de los códigos dobles, voy a escribir R como F. Luego dentro del método open file, quiero devolver return, quiero devolver JSON dot load Math. Cargar voy a pasar el cinco apuntador ocho. Ahora voy a llamar a esta función de usuario de carga dentro de la función de registro. Después de regresar aquí, voy a escribir usuarios iguales a cargar usuario. Ahora voy a establecer otra condición I. Si el usuario nombra al usuario, entonces quiero mostrar un mensaje de error. Déjame mostrarte. Aquí, voy a escribir messagebox dot show error, y vamos a mostrar este error y voy a escribir en nuestro cuadro de error, escribimos nombre de usuario ya Después de mostrar este mensaje de error, quiero detener la ejecución, así que voy a pasar return. Va a mostrar este mensaje de error si tenemos el nombre de usuario preexistente en nuestro archivo JSON Supongamos que ya me inscribo, ya creo mi cuenta con el nombre de usuario de Joint. Entonces si intento volver a inscribirme y llenar el saname Join To, entonces va a mostrar este mensaje de error De lo contrario, necesitamos agregar el nuevo nombre de usuario y el par de contraseñas en el diccionario. Para eso, aquí, fuera del bloque EP, voy a conducir a los usuarios dentro de la base cuadrada, voy a pasar el nombre de usuario y nombre de usuario igual a contraseña. Voy a establecer este archivo. Para establecer el nuevo nombre de usuario en el archivo JSON, necesitamos llamar a una función, y nuestro nombre de función es guardar usuario. Pero no definimos la función, así que definamos la función. Aquí, después de cargar usuario, voy a definir otra función y nuestro nombre de función es Dave guardar subrayado usuario Dentro de la escotadura redonda, va a tomar solo un parámetro usuario. Entonces dentro de esta función, quiero abrir el JSON en modo escritura. Escribo con archivo de usuario abierto en modo escritura como cinco punteros ocho. Entonces voy a escribir Jasn método tonto, Jasn punto dum, y voy a pasar el usuario valor usuario y el archivo y el cinco punto F, y voy a configurar Ahora voy a usar esa función, guardar usuario. Aquí llamo a la función guardar usuario, guardar usuarios. Entonces voy a mostrar el mensaje de éxito. Escribo messagebox dot show Info y nuestro nombre de ventana es éxito y Hemo tipo cuenta Y voy a poner este archivo. Ahora, presione establecer este archivo, enviemos el código en terminal y veamos si funciona correctamente o no. Entonces voy a presionar el botón Ejecutar. Y aquí, voy a tratar de llenar un nuevo usuario. Entonces mi nombre de usuario es Joint JAY a NTA, y voy a establecer la contraseña 12345, contraseña simple, y voy a presionar el botón de registro Después de pulsar el botón de registro, como puedes ver, cuenta creada con éxito. Muestra los éxitos, las masas de éxito. Y si abro mi archivo JSON user dot JSON, name Joint username es Joint y password es 12345 Y si trato de llenar el mismo nombre, unirme y cambiar la contraseña uno, dos, tres, cuatro, e intento registrarme, ahora puedes ver el mensaje de error porque ya existe el nombre de usuario. Entonces nuestro código funciona muy bien. Después voy a agregar otro usuario, agregar uno. Agrega uno y voy a establecer la contraseña 111, y voy a pasar el botón de registro. Se va a establecer el nombre de usuario y la contraseña en mi archivo JSON. Aquí podrás ver el resultado. Nuestra función de registro funciona correctamente. A continuación, tenemos que trabajar en la función de inicio de sesión, pero no en este tutorial. Lo voy a hacer en el siguiente tutorial. Gracias por ver este video, estén atentos para nuestro próximo Tutorial. 57. Inscripción, parte 3: Me alegro de verles chicos. Esta es otra parte de este tutorial y en esa sección, vamos a trabajar en el método de inicio de sesión, esta función. Para eso, voy a eliminar la palabra clave pass de la función de inicio de sesión y aquí necesitamos extraer los datos del campo de entrada, nombre de usuario y contraseña. Al principio, voy a extraer el nombre de usuario y guardarlo en esta variable username. A partir del nombre de usuario de entrada, obtenemos el valor, y la misma manera necesitamos extraer la contraseña. Aquí, voy a escribir Contraseña igual a contraseña de entrada, entrada underscopassword método de puerta de punto Después de obtener los datos de la interfaz, necesitamos cargar al usuario. Para eso, herm tip carga usuario igual al método load user. Éste. Además, es necesario establecer una condición IP. Aquí tip aquí necesitamos establecer una condición EP para que coincida con el nombre de usuario y la contraseña del diccionario JSON. Hearty I nombre de usuario, usar un nombre en usuario Si nombre de usuario en usuario y usuarios dentro de los brasses redondos, voy a usar el nombre de usuario como si paso Join to, entonces va a hacer coincidir la clave Joint con esta contraseña Use un nombre igual a igual a contraseña. Entonces dentro de esta condición IP, quiero mostrar un mensaje de éxito. Aquí, quiero mostrar las masas de éxito con el nombre de usuario. Voy a escribir cajas de masas en cuatro dentro de las Corridas. Nuestro nombre de ventana es éxito, y aquí usamos Estr e imprimir Dé la bienvenida al nombre de usuario. Si Advance login, va a imprimir advName y me uno para iniciar sesión, entonces va a imprimir Joint name También en nuestro blog els, necesitamos manejar el mensaje de error. Voy a escribir ls. Entonces en cambio el Elsblog voy a escribir messagebox Nuestro indoame es error y aquí imprimir, usuario no válido o contraseña Voy a establecer este archivo. Ahora para establecer este archivo. Ejecutemos el código en nuestro terminal e intentemos iniciar sesión. Ahora, como pueden ver, en nuestro campo de nombre de usuario, voy a escribir mi nombre Joan JAY a NTA, J en mayúscula Después de eso, voy a pasar la contraseña. Mi contraseña es uno, dos, tres, cuatro, cinco. Si el nombre de usuario coincide con esta contraseña y pulsa el botón de inicio de sesión, ahora puedes ver bienvenido Únete. Muestro el mensaje de éxito. Pero si cambio el nombre de usuario, entonces elimino el último carácter A e intento iniciar sesión, ahora puedes ver nombre de usuario o contraseña inválidos. Muestra los líos de error. la misma manera, si escribo el nombre de agrego uno A, Dwan y tecleo la contraseña 1111 e intento iniciar sesión, ahora puedes ver bienvenido agrega Él inicia sesión desde que funciona perfectamente. Pero necesitamos actualizar nuestro inicio de sesión desde. Tenemos que hacerlo un poco avanzado. Es un inicio de sesión básico simple desde, no lo quiero. Ahora bien, si te das cuenta, si voy a saltar al usuario JSON fácilmente todos pueden leer la contraseña. Todos pueden usar esta contraseña e iniciar sesión en este sistema. No lo quiero. Quiero hash de contraseña Vamos a actualizar este sistema con hash de contraseña usando SHA 256 La contraseña no se almacena en texto plano. Sea lo que sea que escribamos en el campo de contraseña, nadie puede leerlo directamente. Así que volvamos al archivo Python. Pero antes voy a matar el terminal y volver a la app punto Pi archivo y aquí, voy a importar otro módulo, y voy a importar hashLptiImport hashlip Es un módulo incorporado de Python. Y ahora necesitamos crear una función que vaya a convertir esa va a convertir la contraseña en hash. Voy a escribir una sola función de comando para hash password. Aquí voy a escribir Dave hash password, y dentro de los Runbres voy a pasar la contraseña Entonces dentro de esta función, quiero volver, regresar, y voy a escribir hash leave, hash leap dot, y aquí voy a usar H Jaja 256 Dentro de la Runress voy a pasar la contraseña. Codificación de punto de contraseña, contraseña de codificación de punto y sis redonda. Después del método de digestión tipo punto Higgs. método de codificación de puntos de contraseña convierte la cadena de contraseña en bytes porque hashlib funciona en bytes y hashlib H 256, crea un objeto hash HH 56 a partir del byte de contraseña e ig digest devuelve el hash como un flujo hexadecimal legible en lugar de bytes brutos Voy a usar esta función hash passwords para copiar esta función la voy a usar cuando la inscriba. Entonces cada vez que lo firme, voy a reemplazar esta contraseña con el HashLFOD St usuarios nombre de usuario igual a esta contraseña contraseña hash. Esta función tiene contraseña. Va a almacenar la contraseña en formato hash. Además, voy a llamar a la misma función hash password cada vez que inicie sesión. Aquí, después de cargar el usuario, voy a definir una variable llamada hast hast igual a función hash password y pasamos la contraseña, y voy a reemplazar password con hash variable hash Y voy a poner este archivo. Ahora después de configurar este archivo antes de ejecutar este código, voy a saltar a la configuración de la GUI. Quiero eliminar esta opción porque esta vez en nuestro campo de entrada, quiero mostrar mi contraseña y volver a configurar el archivo. Después de configurar el archivo, si ejecuto mi código en mi terminal y paso el nombre de usuario Ad AD WAN y voy a establecer la contraseña A es 12 WQ y estoy tratando de pasar el registro Después de presionar registrarse, está escrito Json decode error. Creo que hay un problema con la decodificación JSON, así que necesitamos arreglar ese problema. Intentemos arreglarlo. Para resolver el problema en esa condición P, voy a usar o palabra clave, Hem para usar u operador, y voy a establecer otra condición o punto pd punto puerta Tamaño, archivo de usuario igual a igual a cero. Si el archivo está completamente vacío, entonces cree ese archivo JSON. También en nuestro método de usuario de carga, necesitamos manejar el mismo error. Aquí, necesitamos manejar el error de archivo vacío. Para eso, voy a empatar si Os Perth punto obtener tamaño, archivo de usuario igual a igual a vacío, si el archivo handle está vacío, entonces quiero volver, devolver objeto en blanco. Devuelve un objeto en blanco. Quiero establecer este archivo. Además, dentro de la función open, voy a usar Tribloc Prueba dentro de este tri bloque. Quiero regresar. Corté esta porción y dentro del tribloque quiero devolver JSON dot load Math loads Es la base redonda, voy a pasar el puntero del archivo si entonces en nuestro bloque except, excepto aquí, quiero imprimir el error del decodificador JSON. Para manejar el archivo Corrupt, voy a pasar JSON dot JSON DecoDeceError, error y dentro de él, voy a regresar Retorno, quiero devolver un objeto vacío, y voy a establecer el archivo. Además, voy a hacer algunos cambios en la función guardar usuario. Aquí, voy a agregar IndiantFour Indian four, y voy a configurar este archivo Ahora veamos si funcionó correctamente o no después de configurar este archivo, si ejecuto este código en mi terminal y trato de poner algo, supongamos agregar uno Agregar uno es mi nombre de usuario y en nuestro campo de contraseña estoy tecleando QW 12 como y trato de registrarme, como puedes ver, cuenta creada con éxito Imprimo cuenta creada con éxito. Yo te muestro mi JSON, déjame mostrarte mi JSON. Ahora puedes verlo dicho nuestro anuncio de nombre de usuario. Pero en contraseña, decía el código hash. Ahora, si intento iniciar sesión, con el mismo nombre de usuario y la misma contraseña, si intento iniciar sesión ahora puedes ver imprimir bienvenido agrega uno. De igual manera, si añadimos otro nombre de usuario como nervio y contraseña sit, QWERT y 12345, esta contraseña e intentamos registrarnos como puedes ver, cuenta crea con éxito para RAR, guarda esta contraseña, este hashcode Si intento iniciar sesión con la misma contraseña y nombre de usuario, ahora puedes ver pre bienvenida Uno lo que significa que podemos iniciar sesión en la cuenta con éxito. Si utilizo el mismo nombre de usuario y misma contraseña para volver a registrarme, ahora puedes ver el mensaje de advertencia. El nombre de usuario ya existe. Si cambio la contraseña, todavía va a mostrar nombre de usuario ya existe. Entonces espero que ahora el concepto sea claro para ti cómo podemos usar el hash de contraseña para almacenar la contraseña en formato blanco Gracias por ver este video, Estén atentos a nuestro próximo proyecto. 58. Mini aplicación de GUI tkinter de motor de búsqueda.: Hola, chicos, me alegro de verles de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto. Y hoy en este proyecto, vamos a crear esta mini herramienta GUI para buscadores. Para que veas que tenemos una barra de búsqueda. Si buscamos alguna consulta, supongamos India y pulsamos el botón Buscar, se puede ver que devuelve diez resultados de la página web. Además, se imprime la descripción proporcionada por el sitio web. Primero, imprime el número de índice, luego el encabezado. Además, imprime la descripción. Y puedes notar que estos enlaces son clicables. Además, puedes notar que tenemos un subrayado si quieres leerlo más Si haces clic en esa sección, va a redirigir a este enlace. Déjame mostrarte. Entonces, si hago clic en él, va a redit a este sitio web Entonces esto es lo que hoy vamos a construir en este proyecto. Y en nuestro cuadro de resultados, aquí mostramos un total de diez resultados. Y depende de ti cuántos resultados quieres mostrar. Entonces veamos cómo podemos crear este proyecto. En ese proyecto, vamos a aprender sobre el desguace web con la ayuda de Beautiful Entonces, cómo podemos enviar post request a un sitio web, cómo podemos extraer los datos, cómo podemos pritificarlos, etcétera Así que comencemos. Entonces como puedes ver, estamos en mi editor de código de estudio, y cómo creo un archivo Python app dot Pie. Al principio, voy a importar los módulos importantes. Primero, voy a importar módulo Kinter como tipo TK, entrada Kiner como Después desde el módulo Kinter, voy a importar texto desplazado Así que aquí para escribir desde Kiner desde Kiner, voy a importar texto de desplazamiento porque en nuestra área de texto, necesitamos ese scroll pero para desplazarse por la página Después de eso, voy a importar otro módulo llamado request, algún tipo import request. Utilizamos este módulo para enviar solicitud HTTP. Después de eso, voy a importar otro módulo. Y mi módulo lemme es una sopa preciosa. Entonces aquí voy a atar. De BS cuatro importar Beautiful Soup. Usando este módulo, se analiza el SDML. Se ayuda a extraer la descripción de los enlaces de título de las páginas web. Y por fin, voy a importar módulo de navegador web, algún tipo, importar navegador web. Usando este módulo, podemos abrir enlaces en el navegador predeterminado del usuario. Entonces voy a definir una función, y nuestro nombre de función es tal, algún tipo, Dave search. Y por ahora dentro de esa función, voy a escribir pass. No voy a hacer nada aquí por ahora. Después de eso, voy a saltar a la configuración de la GUI. Voy a crear un objeto raíz usando TGass. Entonces escribo raíz igual a t TK. Ahora para crear el objeto raíz, voy a iniciar el bucle GUI para que eso escriba root dot mainloop Ahora vamos a crear la estructura GUI paso a paso. Al principio, voy a asignar el título, y voy a establecer title root dot title Mini buscador. Después de eso, voy a establecer la geometría. Quiero definir el tamaño de ventana para esa geometría de punto raíz tipo viento con 700 X 500 significa altura 500. Después de crear la geometría, voy a crear una barra de búsqueda. Para eso, primero, voy a tomar entrada del usuario. Entonces voy a escribir entrada igual a t punto clase de entrada y dentro los Runss voy a colocar esta clase de entrada dentro de la ventana raíz, y voy a decir la fuente aérea y tamaño de fuente 14 Entonces voy a empacar en la siguiente línea, voy a empacar esta entrada. Voy a empacar el campo de entrada. Así que aquí estoy escriba el método de paquete de puntos de entrada. Y en xs agrego relleno de diez píxeles en Xxs también agrego relleno de diez píxeles pero lleno este campo de entrada en Xxs Por lo que va a tomar el ancho completo de esta aplicación. Déjame mostrarte eso. Entonces después de establecer ese archivo, si yo este código en mi terminal, es como se ve nuestra aplicación. Este es nuestro feed de entrada. A continuación, voy a crear un botón de búsqueda para esta barra de búsqueda. Así que aquí voy a escribir botón de búsqueda, botón subrayado igual a tk punto botón clase, botón Tkt Y voy a colocar este botón dentro de la raíz de la ventana raíz. Y mi texto de botón es texto, y voy a establecer botón de búsqueda de texto, comando, y va a comandar esta función, buscar. Además, voy a configurar la fuente aérea en nuestro botón de búsqueda. Para eso aquí, voy a escribir fuente aérea. Y utilizo fuente de 12 píxeles. Entonces después de eso, voy a empacar el botón de búsqueda. Voy a escribir botón de búsqueda, botón búsqueda método de paquete de puntos. Eso es. Ahora tenemos la barra de búsqueda. Además, tenemos el botón de búsqueda. Entonces después de eso, voy a crear la caja de resultados. Aquí voy a mostrar las URL y la descripción. Para eso, voy a escribir un solo cuadro encomInrsult, y también necesitamos mover esta línea por encima del cuadro de resultados porque esta línea es para el esta línea es Aquí empacamos el botón de búsqueda. Para mostrar el resultado aquí, voy a definir un muy bien llamado cuadro de subrayado de resultado, cuadro de resultados, cuadro de resultados, igual a Scroll text dot, scroll text method Como puedes ver, ya importamos este módulo aquí, scroll text from Kinter Import, Scrollix Entonces dentro de la ronda *** voy a colocar esta caja de resultados en nuestra ventana raíz. Además, uso rap igual a t rep, y uso el tamaño de fuente 11, y nuestra familia de fuentes es aérea. Después de eso, voy a empacar esta caja de resultados. Para ese tipo de cuadro de resultado método de paquete de puntos, y en su lugar el desvestirse en XXS utilizo relleno de diez píxeles En YXS también utilizo relleno de diez píxeles y quiero llenar tanto la dirección Entonces utilizo Tiger ambos. Llenó el área en XXs también en los YxS y se expandió igual a true Entonces si cambio el tamaño de nuestra aplicación, aún así va a llenar el área. Y si configuro ese archivo y ejecuto este código en mi terminal después del archivo 70, si ejecuto este código, si ejecuto este código en mi terminal, es como se veía. Si amplío el área, aún así, se puede ver que se siente el área de texto de desplazamiento. Este es el diseño simple que construimos para mostrar el resultado de la búsqueda. Esta es nuestra barra de búsqueda donde el usuario va a poner la consulta y tenemos el botón de búsqueda. Si presiono el botón de búsqueda, va a encontrar la solicitud en el sitio web, y de acuerdo con el resultado del sitio web, va a imprimir todo el resultado uno por uno. Básicamente, vamos a imprimir un total de diez resultados en esa área de texto de paseo. Entonces esto es todo para este tutorial. Gracias por ver este video mantente atento para la siguiente parte de este tutorial, donde vamos a trabajar en nuestra función, y nuestro nombre de función es buscar. Entonces gracias por ver este video Sytune. 59. Trabajar en la función de búsqueda: Ahora tenemos que trabajar en esta función. Siempre que el usuario haga clic en este botón de búsqueda, quiero ejecutar la función. Al principio, necesitamos obtener la entrada del usuario desde este campo de entrada. Esta variable. Entonces voy a eliminar pass y helm type query, query igual a entry dot G Math. Entonces voy a establecer condición IP. Si no consulta, entonces dentro de esta condición IP, aquí, voy a escribir return. Básicamente, podría leer el texto de la entrada del cuadro de entrada. Si está vacío, entonces directamente va a detener la ejecución. A continuación, necesitamos borrar el resultado anterior y mostrar el texto de búsqueda. Para eso, aquí, voy a escribir cuadro de resultado, cuadro resultado método de eliminación de puntos, dit quiero eliminar desde el inicio desde la posición inicial hasta la posición final. Para eso, necesitamos seleccionar 1.0. Se va a definir la posición de inicio, y luego voy a escribir el método ttk dot Se va a borrar ese cuadro de resultados de búsqueda. Ahora, volvamos al código otra vez. Para no borrar el cuadro de búsqueda, quiero mostrar la consulta de búsqueda actual en ese cuadro de resultados. Para eso aquí estoy escriba cuadro de resultado punto Insertar. Y quiero iniciarlo desde fin del texto y aquí uso Estring y me propina buscando nuestra consulta Después barra inversa N para nuevas líneas. A continuación, voy a preparar los datos de URL. Para eso, voy a usar el sitio web DDG, y voy a usar la versión TML de DG Entonces voy a escribir una URL variable, URL igual a DPs colon slash slam.dog.com slashMLA Es la versión GETML para scripting. Por lo que vamos a enviar la solicitud a esa página web. Y a continuación, tenemos que fingir que vamos a usar un navegador. La solicitud se envía desde un navegador. Para eso, necesitamos establecer el encabezado. Entonces voy a escribir encabezados, encabezados iguales a dentro del carnivorouss, user no es, y el valor es Se va a pretender que la solicitud viene de un navegador. Ayuda a evitar el bloqueo por parte del sitio web. A continuación, necesitamos almacenar la consulta de búsqueda en un formato de diccionario. Para eso, aquí, voy a escribir datos iguales a dentro del Kaliss Aquí uso un diccionario y la clave del diccionario es Q y el valor es query. Este parámetro Q utilizado por Dan Taco y aquí almacenamos la consulta de búsqueda en un formato de diccionario. A continuación, tenemos que enviar la STDPRquest. Para eso, vamos a usar post Math hoop, y aquí necesitamos decir tres parámetros, URL, encabezados y datos. La suma vincula la respuesta igual al método de post de punto de solicitud. Y dentro de la rotonda pasaré los datos de URL y encabezado Utilizándolo, aquí enviamos la solicitud de post al servidor. Y también, recuperamos la respuesta estimada y almacenamos en esa variable en formato de texto. Ahora bien, si imprimo el resultado en un cuadro de resultado, entonces aquí estoy escriba, si imprimo la respuesta, entonces escriba result box dot insert. Y dentro del receso de carrera, voy a empezar desde el final y aquí usando Fstring dentro de la ress Cali quiero imprimir las tomas de respuesta Entonces, sea lo que sea que obtengamos en respuesta, vamos a imprimir en ese cuadro de búsqueda, y voy a establecer ese archivo. Después de configurar ese archivo, si ejecuto este código en mi terminal y busco en nuestra consulta, como cualquier cosa puedes buscar cualquier cosa, Python, idioma, y presionar Enter, puedes notar que va a imprimir toda la estructura de estimación. Déjame mostrarte. Entonces después de presionar el botón de búsqueda, puedes ver que imprime la estructura completa de estimación con etiquetas, y se ve muy jibberish Tenemos los títulos, etiquetas, resultados, todo lo que imprime en esa caja. Ahora, tenemos que filtrarlo también. Tenemos que embellecerlo. Para eso, voy a usar una sopa hermosa para analizar el contenido. Entonces vamos a convertir TML sin procesar a un formato estructurado Entonces, por ahora, voy a comentar esta línea. No lo necesitamos. Y aquí, voy a pasar los contenidos. Entonces voy a crear una sopa objeto sopa, sopa igual a sopa hermosa. Dentro del proceso redondo, voy a pasar el texto en sí, así que hay tipo response dot text. Y yo uso este analizador, t dot parser. Ahora es muy fácil extraer el elemento. A continuación, necesitamos encontrar todo elemento profundo con resultado de clase. Entonces aquí, voy a definir una variable llamada results, resultados iguales al método final de sub punto. Y dentro del receso redondo, quiero apuntar a todos los elementos profundos. Entonces utilizo etiqueta profunda. Entonces aquí paso Dev. Va a apuntar a todas las etiquetas profundas. Pero en nuestra página, hay muchas etiquetas profundas, pero sobre todo, quiero apuntar a la clase de resultado. Quiero apuntar a etiqueta profunda con clase de resultado, así defino el subrayado de clase igual al resultado, y lo almacenamos en esa variable de resultados Ahora bien, si imprimo ese valor de resultado en nuestro cuadro de búsqueda de tipo, resultados punto insertar, aquí, voy a imprimir los resultados de la variable de resultado y establecer este archivo y ejecutar este código en mi terminal y en nuestra palabra de búsqueda, si escribo algo, supongamos HTML. Quiere buscar tabla y presionar el botón de búsqueda. Ahora se puede ver que devuelve el resultado. Devuelve el resultado, pero esta vez va a imprimir, va a apuntar solo al dag profundo con resultado de clase. No apunta a otros. Se va a devolver toda el área de elementos que tienen esta clase. Y dentro de este elemento profundo, se puede ver, tenemos otro elemento profundo, H a elemento. Aquí tenemos el ancla con resultados de clase A. Contiene el título, también el enlace, el enlace del sitio web. Entonces hay que apuntar a esa clase con el elemento. Y para anclar la descripción proporcionada por el sitio web, necesitamos apuntar a los resultados de la clase Snip, esta Así que vamos a hacer eso en la siguiente parte de este tutorial con la ayuda de for Loop. Entonces, uno por uno, voy a apuntar a todos los enlaces proporcionados por este sitio web. Y depende de ti cuántos resultados quieres anclar en ese cuadro de resultados, en ese cuadro de búsqueda. Así que gracias por ver este video, estad atentos para la siguiente parte de este tutorial. 60. Muestra el resultado en un cuadro de texto: Oigan, chicos, me alegro de volver a verles. Esta es otra parte y la última parte de este tutorial. Y aquí voy a correr un seguimiento. ¿Por qué tenemos que hacer un seguimiento? Porque necesitamos apuntar sólo a diez resultados. Necesitamos apuntar solo al elemento de diez dB, el primer elemento de diez dB. Y necesitamos imprimir el enlace, la etiqueta del título y la descripción. Para eso, necesitamos usar ese bucle. Algún tipo para I resultado en enumerar función. Entonces dentro de la Rundrass aquí a partir de los resultados, utilizo la técnica de rebanado, listan la técnica de rebanado Y a partir de aquí, apunto al resultado de diez. Y aquí lo empiezo desde el primer resultado. Recuerde, represento el número de índice y resultado representa cada bloque de búsqueda. Ahora, es posible que tenga duda de por qué usamos enumerate function La función Enumerate agrega un índice. Quiero decir que va a agregar un número de índice a cada uno de los elementos. Cada uno de los resultados de búsqueda. Funcionará como mostrador. A continuación, desde el resultado de la búsqueda, voy a apuntar a la etiqueta del título. Pero antes, voy a comentar esta línea por ahora, no necesito esta línea. Y dentro de este bucle for, aquí, voy a apuntar a la etiqueta del título usando el nombre de la etiqueta también la etiqueta con una clase en particular. Samotag title tag igual al resultado punto Find. Y usando el método fino, vamos a encontrar toda la etiqueta de anclaje y la etiqueta de anclaje particular que tienen exactamente la misma clase, resultado undercoe A, y de la misma manera, necesitamos encontrar la descripción Entonces, a continuación voy a apuntar a la etiqueta Snippet. Para eso, voy a escribir una etiqueta de fragmento variable igual al método de búsqueda de puntos de resultado Y aquí, voy a apuntar a la etiqueta de anclaje y a la etiqueta de anclaje con este resultado de clase underscoe underscore, A continuación de esta etiqueta de título, voy a extraer el título y la filtración. Sí, esta etiqueta de título contiene el título y el enlace. Entonces para extraer eso aquí, voy a definir una variable llamada title igual a title tag dot gate text. Entonces, usando el texto de Gate, vamos a obtener el texto de la etiqueta del título del título. Con eso, también, necesitamos establecer una condición p para manejar los datos faltantes. Para eso, voy a escribir si etiqueta de título sin título. Si no hay ningún título disponible en esa etiqueta, entonces vas a imprimir título igual a ningún título. Ahora después de extraer el título de esta etiqueta de título, necesitamos extraer el enlace de la etiqueta de título. Para eso, aquí, voy a escribir link igual a from title tag, title tag dentro de las llaves cuadradas, dentro de la bris cuadrada dentro del doble curso, quiero apuntar al atributo Aquí voy a apuntar al atributo llamado HREA que va a contener el enlace exacto Entonces escribe HREF y también voy a establecer la condición si etiqueta del título, lo contrario, va a imprimir hastexg Si no hay enlace, entonces va a imprimir la etiqueta has. A continuación, necesitamos extraer la descripción de la etiqueta de fragmento Para eso, voy a Snip it equival para snipitag equival para snipitag Y aquí digo que condicione si etiqueta Snippy otra cosa sin descripción Si hay una etiqueta snippy, entonces va a imprimir el texto de la etiqueta Snip, y si no hay texto de etiqueta snippy, entonces no va a imprimir Entonces uno por uno, voy a imprimir el enlace del título y la descripción en nuestro cuadro de resultados. Así que aquí, voy a apuntar a la caja de resultados de inserción de punto Método. Y aquí insertamos el título. Vamos a comenzar desde el final, y usando la cadena E, primero imprimo el número de índice de este resultado, luego imprimo el título de este resultado. Entonces utilizo una nueva línea para el espacio, y aquí puedes notar que usamos una etiqueta de título porque usando esta etiqueta, más adelante, voy a darle estilo a este texto, el texto de este título. Después de eso, voy a imprimir el enlace. Entonces voy a imprimir el fragmento también. Ahora después de hacer eso, configura el archivo y ejecuta este código en mi terminal y veo es que funcione correctamente o no. Ya casi terminamos. Entonces voy a buscar una consulta. En nuestro caso, voy a buscar el nombre de mi país, India y presionar Enter, y presiono el botón Buscar. Después, algún tiempo, como se puede ver, devuelve resultado buscando la India. Es nuestra consulta, y este es nuestro título, y este es el enlace, y ese es el enlace proporcionado por el buscador. Y es la descripción proporcionada por este sitio web. Y como puedes ver, cada vez que imprime el número de índice, es trabajo como contador, e imprime un total de diez resultados en nuestro cuadro de resultados porque mencionamos imprimir diez resultados en nuestro bucle. Ahora necesitamos hacer clic en este enlace. Para eso, volvamos al código porque si hago clic en este enlace, quiero abrir el enlace en mi navegador. Entonces volvamos al código. Entonces quiero hacer clic en el enlace. Y para ello, primero, necesitamos el índice inicial y el índice final. Para obtener la posición del enlace, necesitamos el índice de inicio y el índice final. Entonces voy a definir índice de inicio igual a aquí, voy a apuntar cuadro de resultado de cuadro de resultado índice de punto, índice. Después dentro del receso redondo, primero, voy a escribir pk dot insert. Éste. Ahora bien, ¿ qué va a representar? inserto Pdot representa la posición actual del cursel en la casilla de selección Y para moverme hacia atrás, aquí, voy a usar signo de concatenación y cadena E. Concatenar con el interior de los códigos dobles. Dentro de los códigos dobles, aquí, voy a extraer la longitud del enlace. Entonces dentro del Cariss, voy a usar la función N AE N, N, y dentro del receso redondo aquí, voy a pasar el enlace variable link Eso es. Supongamos que tenemos 19 caracteres en nuestra fuga, y como te dije, necesitamos movernos hacia atrás porque aquí seleccionamos la posición final de este enlace. Entonces voy a usar signo menos longitud de este enlace. Además, después de Calibrass voy a usar un personaje llamado pequeño C. Ahora, ¿qué es esto Básicamente, esta es una sintaxis especial de Kiner. Si usamos plus sine, entonces va a seguir adelante. Y si usamos menos seno, entonces se va a mover hacia atrás. Y aquí definimos el lngth, el personaje, cuántos personajes tenemos en ese vínculo Supongamos que si tenemos 19 caracteres en ese enlace, entonces a partir de este punto, va a mover 19 caracteres hacia atrás. Y esto es lo que exactamente usamos en ese código. Entonces ahora tenemos la posición de partida de esta ventaja en ese punto. Ahora también necesitamos la posición final. Para eso solo escriba índice, índice guión bajo igual al índice de punto de cuadro de resultado , inserción de punto de ticker Se va a extraer la posición final. A continuación, necesitamos aplicar una etiqueta al rango de texto. Para eso aquí, voy a escribir result Box dot at tag method. Cuadro de resultado punto en la etiqueta dentro de la Runress. Primero, necesitamos proporcionar un nombre de etiqueta, y como nombre de etiqueta, voy a usar el nombre del enlace en sí, y luego necesitamos definir la posición inicial, el índice de inicio, y paso el índice de inicio de un enlace. También pasamos el índice final de un enlace. A continuación, voy a agregar un evento a este enlace, y voy a usar click event. Para eso, voy a escribir result box Tt, tag, bind. Después dentro de las rotondas, voy a etiquetar a Link Link en sí Y a una coma aquí voy a usar, y aquí voy a usar el mouse click derecho Para eso, dentro de los códigos dobles, voy a usar ese código. Botón uno. Entonces en coma, aquí uso un one liner función Lambda, Lambda E. Y aquí uso código de evento botón uno Es para p clic del ratón. Entonces, si alabo el mouse de labios haga clic en este enlace, va a activar este evento. Y luego utilizo una función corta anónima. Es una función pequeña en lugar de usar código de alineación grande. Y estas funciones se ejecutan cuando hacemos clic en este botón. Y en esa función, representamos el objeto evento. La impresora lo presiona automáticamente cuando ocurren los eventos. Aquí no lo usamos, pero debe estar incluido. Y luego viene la parte más importante. URL igual al enlace. Esto vio el problema común de Python llamado enlace tardío. Sin esto, todos los clics abren solo el último enlace. No va a abrir el enlace exacto en sí mismo. Aquí tecleo URL igual a link, colon, webbrowser dot Open method, y voy a abrir la propia URL Ahora cada Lambda almacena su propia copia del enlace, y este es el comportamiento correcto. Cada resultado abrió su propia URL. Y la función navegador web punto abrirla va a abrir el enlace en un navegador predeterminado. Ahora después de eso, voy a darle estilo al enlace usando métodos de configuración. Entonces Tipo, cuadro de resultado punto, etiqueta, config. Y dentro de las rotondas voy a apuntar al propio enlace, y voy a establecer primer plano color azul y además voy a agregar Entonces se va a agregar el subrayado a cada uno de los enlaces. También va a cambiar su color. Entonces ya casi terminamos. Simplemente voy a darle estilo a esta etiqueta de título. Voy a aplicar un teléfono un poco más audaz y una fuente más grande a este título Para eso, en esa sección, voy a atar el cuadro de resultado dot Tag Config Method. Y voy a apuntar a esta etiqueta. Titulo, y lo voy a decir color de fuente AL. Y aquí dije fuente Aerial, y el tamaño de la fuente es 12, y uso la fuente boulder. Eso es. Y ahora voy a configurar este archivo y ejecutar este código en mi terminal. Después de ejecutar este código en mi terminal, como pueden ver, está abierta la ventana. Y voy a buscar mi consulta en lenguaje Python. Y si presiono este botón de búsqueda, ahora puedes notar que es imprimir nuestro resultado. Imprimo todos los títulos con fuente boulder y todos los enlaces con subrayado y color azul Y ahora, si quieres abrir alguno de los enlaces, simplemente haz clic en este enlace, y va a abrir el enlace en tu navegador, en tu navegador predeterminado. Si quieres abrir este enlace de Wikipedia, simplemente haz clic en este enlace, trae a la página web de Wikipedia. Entonces así es como su trabajo. Y como te dije, va a devolver un total de diez resultados. Depende de ti cuántos resultados quieres mostrar. Entonces esto es todo para este tutorial. En ese proyecto, creo una mini búsqueda en Nin GY. Básicamente, extraemos el resultado de un sitio web en nuestro caso, Doug DGG, y lo extraemos y organizamos usando el modo de sopa hermosa Básicamente, realizamos algún pequeño método de flejado web, y luego lo embellecemos e imprimimos el resultado en nuestro Gracias por ver este video. Estén atentos para nuestro próximo proyecto.