Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Corrección Examen - Vídeo 1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Corrección del examen de SGE-python. Creando ventana principal desde una clase.
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:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- 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