Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Corrección Examen - Vídeo 1 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 17 de diciembre de 2023 por Mario S.

79 visualizaciones

Corrección del examen de SGE-python. Creando ventana principal desde una clase.

Descargar la transcripción

Bueno, en estos vídeos, van a ser dos o tres vídeos, para no hacerlo muy largo, que lo van a hacer de todas formas, vamos a ver cómo es la corrección del examen de la primera evaluación de Python del módulo de sistema de gestión empresarial del curso 23-24. 00:00:12
Entonces, lo primero que os pedía en el examen era hacer una ventana, generar una ventana para poder dibujar dentro de esa ventana principal los diferentes widgets. 00:00:35
Siendo widget los botones, las cajas de texto, todos los objetos que conocéis que se pueden insertar dentro de un formulario y además esos otros contenedores que puedo meter dentro del Padre para ir dibujando, 00:00:51
para ir pintando esos objetos de los formularios de la forma que sea más cómodo cara al proyecto que tengo en frente, ¿vale? 00:01:10
que tengo que desarrollar bueno en python para para hacer que nos visualice una pantalla una 00:01:24
ventana perdón tenemos que trabajar con el teca inter 3 en un fichero normalito para una ventana 00:01:35
normal y ya esto lo primero que hacemos es importar esa librería entonces el importe k inter azteca 00:01:47
vale esto importó la librería tk inter y le pongo un alias vale el azteca que ahora aparece con un 00:01:57
gris más clarito porque no lo he usado todavía vale cuando creamos una ventana se le suele 00:02:05
llamar ventana root si buscáis información por internet por los foros 00:02:14
por la documentación técnica os pondrá root 00:02:20
entonces bueno pues yo lo voy a dejar como root aunque este nombre podría ser 00:02:25
el que vosotros queráis vale entonces root y ahora le vamos a poner tk que 00:02:30
recordar que tk es el alias que le he puesto a tkinter punto tk 00:02:36
esto crea una ventana y escribir esto y escribir esto 00:02:43
es lo mismo tk inter punto tk esto es lo mismo vale 00:02:48
aquí me está dando este problema porque lo importaba así entonces bueno 00:02:58
pero podríais escribir directamente el tk inter vale esto fuera vale 00:03:05
aquí tendremos o tenemos ya importada la 00:03:11
librería le hemos puesto el alias hemos llamado al método tk paréntesis 00:03:15
paréntesis que nos crea una ventana y fijaros los parámetros 00:03:21
que le podemos pasar vale el screen name 00:03:28
el base name class name vale todos estos parámetros 00:03:32
bueno lo último que me faltaría es hacer el root punto main club 00:03:38
vale tenéis que recordar que python es un lenguaje interpretado y tiene que estar repintando los 00:03:47
diferentes widgets vale widget es igual a los objetos que van dentro del formulario tiene que 00:03:57
estar repintando esos widgets cada vez que se lee no cada vez que se 00:04:04
interpreta el lenguaje vale si nosotros ejecutamos esto 00:04:10
aquí ya tenemos nuestra ventana 00:04:16
vale entonces 00:04:23
ya está con estas tres líneas lo básico ya lo tengo ya tengo creado una ventana 00:04:28
que es o que hago referencia a ella a través de root y que puedo empezar a dibujar diferentes 00:04:33
widgets dentro de la misma vale entonces si yo empiezo a poner aquí ahora no son widget ahora 00:04:40
voy a configurar esa ventana por ejemplo empieza con el road root title y le pongo el título no 00:04:47
pues examen segundo de edad le metemos root 00:04:53
geometry le meto el tamaño y la posición 00:05:04
que quiero que tenga esa ventana vale entonces 00:05:12
A Geometry se le pasa un stream en el que los dos primeros valores que van separados entre ellos es el ancho y el alto, ¿vale? 00:05:19
Aquí lo tenéis, si os fijáis, width y height separados por una X y luego le paso la posición en X y en Y, más con más, ¿vale? 00:05:30
O sea, el ancho y el alto lo separo con una X, la posición en X y en Y lo separo con más, ¿vale? 00:05:40
Entonces, ancho, vamos a ponerle 400 por 150, ¿vale? 00:05:49
Y ahora le paso el más y le digo la x, pues x, pues pónmelo en 150, por ejemplo, y pónmelo en 100, por ejemplo, ¿vale? 00:06:02
podemos decirle por ejemplo 00:06:15
el root.resize 00:06:19
a false 00:06:21
para que no se rescale 00:06:26
vale 00:06:29
y podría ir jugando 00:06:30
con distintos parámetros 00:06:33
sobre root 00:06:34
esto nos va a proporcionar 00:06:35
a ver que hemos hecho 00:06:38
me pide 00:06:43
dos 00:06:56
vale 00:06:57
Pues ahora sí 00:06:58
Sí, vale 00:07:01
Me hace la ventana 00:07:04
No me deja 00:07:06
Reescalarla 00:07:08
Ni a lo alto 00:07:09
Ni a lo ancho, porque lo hemos puesto en falso 00:07:11
Ha metido 00:07:14
El título, vale 00:07:16
Y la ha puesto en la posición X e Y que le he dicho 00:07:18
Vale, sí que me 00:07:20
Deja moverla 00:07:22
Pero ni reescalarla 00:07:23
Ni, bueno, y el tamaño 00:07:26
se lo damos nosotros fijo vale bueno pues esto mismo tenemos que 00:07:28
conseguirlo lo tenemos que hacer mediante una clase vale entonces los 00:07:34
pasos van a ser lo mismo pero ahora desde el main page lo que voy a hacer es 00:07:40
llamar a esa clase que voy a crear yo en otro fichero punto p 00:07:45
vale y voy a ir trabajando de esa manera vamos a crearnos nuestra clase para 00:07:52
crearnos nuestra clase creó otro fichero y le voy a llamar pues post class ventana 00:07:56
principal punto 00:08:06
vale a ver si me lo crea ahí está vale entonces qué es lo que hemos hecho lo primero 00:08:11
en mainpay importar esa librería vale yo de todas formas vamos a comentar esto 00:08:19
vamos a ponerle 00:08:32
ejercicio examen primera evaluación segundo 00:08:36
Hoy es el 17 de diciembre de 2023. Mario Santos. Sistemas de gestión empresarial. 00:08:47
vale bueno yo me empiezo a hacer mis comentarios vale entonces lo primero que hacemos lo que 00:09:18
decíamos importe tkinter as tk vale exactamente igual que en el otro fichero la primera línea 00:09:25
vale importe tkinter as tk vale ya lo tengo vale aquí ahora lo que tengo que hacer es una clase 00:09:36
Entonces, para hacer esta clase, siempre empezamos con clase. Esto ya me define una clase. Vale. El nombre de la clase. Vamos a llamarle ventana principal. Paréntesis, paréntesis. Esta es mi clase. Vale. 00:09:46
Ahora, voy a heredar desde el alias que he puesto, ¿vale? De tk, minúscula, punto, tk. Estoy heredando tk, punto, tk. ¿Qué quiere decir eso? Que esta clase, la instancia que genere de esta clase va a ser toda esa ventana, ¿vale? 00:10:07
Por eso en las clases habéis trabajado con el this, en este caso en Python es con el self, porque hacemos referencia a nosotros, ¿vale? A esa instancia, a esta clase. 00:10:31
Entonces, es muy importante estar trabajando todo el tiempo con el self, ¿vale? Vamos a poner aquí clase principal de, bueno, de creación de ventana, ¿vale? 00:10:45
clase principal de creación de ventana vale bueno como sabéis cuando yo genero una clase esa clase 00:11:06
tiene un constructor y en python como no puede ser de otra manera pues lo mismo vale entonces 00:11:16
lo primero que hago es crearme ese constructor ese constructor es un de guión bajo guión bajo 00:11:24
dos guiones bajos, init, guión bajo, guión bajo, paréntesis, paréntesis, así se le llama al constructor en las clases en Python, ¿vale? 00:11:32
Y como es un dev, pues le pongo dos puntos, ¿vale? Lo que tengo que pasar siempre a las funciones, a los métodos que estoy declarando 00:11:48
declarando dentro de la clase que esté generando, en este caso dentro de la clase ventana principal, 00:11:58
siempre es self, ¿vale? Porque siempre, porque os tenéis que acordar de que estamos trabajando 00:12:04
con una instancia de esta clase, ¿vale? Y estamos haciendo referencia siempre a esa instancia. 00:12:11
Bueno, hay otra cosa que es importante, que es que cuando heredo de otra clase, hay que hacer 00:12:17
referencia al constructor de la otra clase vale entonces si no le hacéis esa 00:12:26
referencia nos saltará un error de redundancia 00:12:32
esto os tenéis que acordar siempre entonces para hacer referencia a ese 00:12:37
constructor es el súper paréntesis paréntesis punto init 00:12:41
guión bajo guión bajo y ni guión bajo guión bajo vale esto está haciendo 00:12:48
referencia a la al constructor de la clase de la que heredó súper vale que 00:12:54
este cap el alias tk con tk vale vale esto ya me está haciendo una 00:13:03
instancia de esta clase que es la ventana pero si yo no pongo nada más y 00:13:12
yo vengo al main y le digo ahora le digo de éste 00:13:18
en clase ventana principal import ventana principal vale le estoy 00:13:25
diciendo desde este fichero desde clase ventana principal pay importa perdón no 00:13:34
clase desde el fichero de python importa la clase ventana principal vale dentro 00:13:41
de este fichero de class ventana principal punto p y podría tener 00:13:48
definidas varias clases vale entonces yo tengo como primer paso 00:13:52
es el segundo paso igual que antes me declaró mira mi variable que va a hacer 00:13:59
referencia a esa instancia vale y llamó a ventana principal 00:14:05
para el disparates vale entonces 00:14:12
En ese momento, en esta línea, es donde yo he creado la instancia, la instanciación de esa ventana. 00:14:17
Y como antes, esto en algún lado tiene que aparecer, tienes que decirle que me lo redibuje en cada loop, en cada vuelta en la que interpretamos el código. 00:14:25
Vale, total, que ahora tenemos este main que llama a un fichero e importa una clase que hemos creado dentro del fichero, lo asignamos a esta variable, lo referenciamos mediante esta variable y lo redibujamos en cada loop. 00:14:39
Y me he creado esta clase en la que heredo de TK, mejor dicho, heredo el método TK de TKinter, que es el que genera esa ventana, ¿vale? En la que vamos a dibujar los widgets. 00:14:55
Vale, si yo cojo y ejecuto, ya me lo está haciendo. Me está dibujando esa ventana en la posición 0, 0 y con un tamaño que me da por defecto, ¿vale? Con el título TK. Bueno, entonces, esto nos está funcionando, perfecto. 00:15:16
Vale, entonces ahora lo mismo que hemos hecho antes, vamos a ir haciéndolo aquí. Yo podría poner, en este caso, quiero hacer referencia a la propiedad Geometry. La propiedad Geometry es de la ventana y antes poníamos root.geometry y le pasábamos ese tamaño y esa posición. 00:15:35
¿Vale? Aquí no puedo poner root porque root pertenece, es una variable que pertenece a main. Insisto, aquí la ventana es la propia instancia, ¿vale? Por eso, esa propia instancia es la que paso en el self, es la que paso en el constructor como self, ¿vale? 00:16:01
entonces ese self, le digo que self.geometry 00:16:23
y ahora se lo ponemos aquí, me parece que eran 400 por 00:16:31
200, vamos a poner 500 00:16:36
y aquí más 00:16:41
posición 200 00:16:45
más 250 00:16:51
este no así vale le pasó esa string que más le he pasado antes el ser punto el title 00:16:55
examen segundo de dame qué más le he pasado el recibo 00:17:05
está igual vale y el recibo le hemos dicho que es falso para hacerlo más ancho y falso para hacerlo 00:17:14
más alto y creo que ya lo así lo antes lo he dejado vale entonces fijaros como leído poniendo 00:17:31
los mismos llamando a los mismos métodos de tk vale pero insisto que como es una instancia con 00:17:41
el self vale si esto lo ejecutó aquí la tengo la ventana con su título con su 00:17:49
tamaño que no es escalable vale y ya tenemos hecho en nuestro primer paso que 00:17:57
es la creación de la ventana muy bien ahora 00:18:03
pues una de uno de los axiomas de la programación es 00:18:10
poder reutilizar el código vale entonces para reutilizar el código podemos coger y decir bueno 00:18:17
quiero poder mandar el ancho el alto la posición en x en y el título como parámetro de entrada 00:18:28
esta clase vale entonces es importante también que os acordéis que 00:18:38
los parámetros de entrada a una clase se reciben en el init en el constructor 00:18:46
jamás 00:18:52
vale entonces vamos a pasarle como parámetro de entrada a la clase todos 00:18:57
estos datos para poder reutilizar esta clase cuando nosotros queramos vale y un 00:19:03
poco lo que os comentaba nunca se reciben los parámetros de entrada desde 00:19:08
donde estoy definiendo la clase se reciben los recoges desde el constructor 00:19:13
vale entonces en este caso voy a tener un parámetro que es el 00:19:19
ancho 00:19:25
el alto 00:19:29
Y la posición en X y la posición en Y. 00:19:35
Vale, esto es lo que recibiría y aquí pondríamos, pues ese ancho, ese alto, vale, entonces esto lo pasamos mediante el tanto por ciento de, 00:19:43
para decirle que le voy a pasar aquí un parámetro que es un valor un número 00:19:58
vale aquí es un tanto por ciento de aquí es un tanto por ciento de 00:20:05
y aquí es un tanto por ciento de y aquí le digo qué parámetros son esos que le 00:20:11
voy a pasar que en este caso es way 00:20:18
Es la altura, es X y es Y. 00:20:22
Vale, fijaros como cuando he hecho mención a estos parámetros, aquí ya no están en un gris más claro, ¿vale? 00:20:28
Porque ya lo estáis utilizando. 00:20:37
Bueno, en el constru... Uy, esto está mal. 00:20:39
Perdón. Ah, no, no, no, no, sí, está bien. 00:20:42
En el constructor, lo que se suele hacer es, por si vamos a usar estas variables en el resto de métodos de esta clase, se suele pasar estas variables a variables de clase. 00:20:44
Entonces, se suele poner aquí el self.way, esto es igual a, vale, aquí, hago lo mismo con todas. 00:21:00
Esto solo es si quiero usar estas variables en otros métodos de esta clase. 00:21:21
vale, si no 00:21:31
pues no os hace falta 00:21:33
pero yo creo que como 00:21:34
norma 00:21:36
está bien que lo hagáis 00:21:39
self.x 00:21:40
y así os vais quitando 00:21:41
de problemas 00:21:44
entonces aquí lo que voy a usar 00:21:46
es estas mismas variables pero con 00:21:50
self 00:21:52
self 00:21:52
self 00:21:54
vale, ya tengo 00:21:58
todas esas variables 00:22:07
que se van a convertir en un string en mi clase las he recibido las he recibido en el constructor 00:22:09
tengo la referencia al constructor de la clase de la que heredó vale y en principio ya estaría 00:22:18
bien bueno en principio no porque también hemos dicho que vamos a pasar este string vale entonces 00:22:28
vamos a pasar ese string, ese string lo pasamos como title, por ejemplo, esto le vamos a llamar 00:22:33
self.title, es igual a title, y aquí pues le paso el self.title, ¿vale? Vale, y entonces 00:22:44
me voy a mi clase principal y aquí ahora le tengo que empezar a pasar todos estos 00:23:02
parámetros bueno alguna cosa que os pasa a alguno de vosotros algunos de vuestros compañeros de 00:23:08
promociones anteriores o vale es que dices bueno aquí hay 1 2 3 4 5 6 parámetros eso no es cierto 00:23:16
vale el self no lo contéis como un parámetro de entrada el self es el que está haciendo referencia 00:23:28
a la instanciación vale ser a la instanciación el resto si son parámetros de entrada pero el 00:23:37
self no de hecho si yo cojo y me declaro aquí otra función que puede ser en cajas 00:23:44
vale haciendo referencia a los frames que vamos a crear dentro aquí le digo también que heredo 00:23:53
que vamos a trabajar sobre esta instancia 00:24:04
si yo no pusiera este self 00:24:11
no tendría acceso a los valores 00:24:13
de todas las variables que hemos declarado con el self. 00:24:17
¿Vale? Todas las variables que empiezan por self. 00:24:21
o todas las funciones que tengan self 00:24:24
si yo no le meto a esa función, a este def, a este método 00:24:26
Este self no tendría acceso, ¿vale? Entonces siempre a los métodos de una clase le pasamos el self, ¿vale? Para decirle al sistema que estamos haciendo referencia a todo lo que es, a todo lo que forma parte de esa instanciación, ¿vale? 00:24:31
este pas no es nada más pues para crear un método en blanco y ya está no lo voy a usar ni nada pero 00:24:50
para que no me salte ningún error bueno total que tenemos esto así ahora nos vamos al main y 00:24:57
en ventana principal ahora tenemos que pasarle esos parámetros vale estos parámetros serán me 00:25:05
parece que era 500 de ancho 200 de alto no sé ya no me acuerdo vale pero 00:25:12
imaginaros es algo así examen segundo de dan 00:25:29
vale le he pasado el way la x y el title vale como parámetro de entrada insisto 00:25:38
estos parámetros los recogemos desde el constructor desde el init y ya empieza a 00:25:48
jugar con los diferentes valores para crear esa ventana vale lo 00:25:53
ejecutamos y nos ha dado algún problema vamos a 00:26:00
a ver bueno nos está dando este error de que el string no es llamable de dónde viene ese problema 00:26:05
ayer pasado un título le he puesto lo declarado lo he metido lo he guardado dentro de la variable 00:26:14
de clase es el punto title pero no me he dado cuenta de que es el punto title es un método 00:26:22
de tk, es para poner el título, entonces estoy usando 00:26:29
un método 00:26:33
de la clase de la que heredo, como si fuera una variable 00:26:38
vale, entonces le estoy volviendo a python un poco loco 00:26:42
le vamos a cambiar el nombre, le vamos a poner aquí 00:26:46
mi title, vale 00:26:49
ahí guardo title, y aquí lo que voy a llamar es 00:26:53
a mi title, vale, esto nos debería funcionar, vamos a verlo, si no nos funciona, bueno, 00:26:57
si nos funciona aquí está, vale, a lo mejor, bueno, ya tenemos el título, nos funciona 00:27:08
todo, no se rescala, nos lo pone en la posición que le hemos dicho, lo vamos teniendo todo, 00:27:13
perfecto, vale, a lo mejor es conveniente usar las funciones para asegurarnos de que 00:27:17
texto vale entonces con el str paréntesis y cerrar paréntesis esto es 00:27:27
texto porque la estamos pasando cuando ya vamos a la clase como un stream o sea 00:27:35
no puede ser nada más que texto pero a lo mejor es buena costumbre por si acaso 00:27:38
usar ese tipo de funciones sin str float las típicas para pasear los datos que 00:27:44
vosotros ya las habéis usado un millón de veces vale entonces bueno pues 00:27:52
tenemos esto lo ejecutamos y hasta aquí nos funciona perfectamente vale pues ya 00:27:56
tenemos nuestra clase tenemos nuestro fichero principal que va a llamar a 00:28:02
nuestra clase pasándole los parámetros tenemos 00:28:08
esta clase que nos crea la ventana en la que recibe los parámetros desde el 00:28:12
constructor en la que hace mención al constructor de la clase heredada en este 00:28:17
caso de tkinter.tk vale el método que nos dibuja esa ventana 00:28:22
que guardo los parámetros de entrada en 00:28:30
variables de la instancia para luego poder hacer referencia a estas variables 00:28:35
desde cualquiera de las métodos de las funciones que estoy creando 00:28:40
y ya está este vídeo lo voy a dejar aquí para que no se hagan muy largos voy a ir 00:28:45
paso a paso haciendo los diferentes vídeos vale y este lo dejo aquí en el siguiente 00:28:51
me pongo a crear las diferentes cajas vale los tk frame un saludo hasta luego 00:28:58
Valoración:
  • 1
  • 2
  • 3
  • 4
  • 5
Eres el primero. Inicia sesión para valorar el vídeo.
Idioma/s:
es
Autor/es:
Mario Santos
Subido por:
Mario S.
Licencia:
Dominio público
Visualizaciones:
79
Fecha:
17 de diciembre de 2023 - 15:20
Visibilidad:
Público
Centro:
IES VILLABLANCA
Duración:
29′ 10″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
454.91 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid