1 00:00:00,560 --> 00:00:05,820 Vamos a crear una pequeña aplicación en la que vamos a estudiar los eventos. 2 00:00:05,960 --> 00:00:09,960 Para ello voy a crear una carpeta y voy a llamarla eventos. 3 00:00:11,539 --> 00:00:17,719 Tengo mi carpeta eventos, voy a abrir un terminal y abrir mi aplicación Design. 4 00:00:20,199 --> 00:00:21,420 Voy a abrir el Designer. 5 00:00:21,719 --> 00:00:27,160 Otra vez voy a crear una ventana principal, lo mismo que hacía antes, le voy a cambiar el tamaño. 6 00:00:27,160 --> 00:00:47,719 y le voy a añadir una etiqueta, un botón, y voy a poner una distribución horizontal. 7 00:00:49,820 --> 00:00:51,799 Hasta ahora no he hecho nada más. 8 00:00:52,460 --> 00:00:59,140 Bueno, esto que aparece aquí, esto que pone aquí, label, es como en Python voy a acceder a este objeto. 9 00:00:59,140 --> 00:01:02,840 Cuando quiera acceder a este objeto, voy a llamar a label. 10 00:01:03,560 --> 00:01:08,420 Cuando quiera acceder al pushbutton, voy a poner pushbutton. 11 00:01:08,719 --> 00:01:13,359 Realmente los nombres por defecto no los voy a mantener. 12 00:01:13,879 --> 00:01:16,099 Entonces lo que voy a hacer es cambiarlos aquí. 13 00:01:16,599 --> 00:01:20,420 Voy a respetar esto de label para saber qué tipo de objeto es dentro del código Python. 14 00:01:20,420 --> 00:01:24,000 Voy a poner etiqueta label. 15 00:01:24,000 --> 00:01:26,900 y aquí voy a poner 16 00:01:26,900 --> 00:01:31,120 pulsador 17 00:01:31,120 --> 00:01:34,340 pushbutton 18 00:01:34,340 --> 00:01:38,579 a este he llamado 19 00:01:38,579 --> 00:01:40,760 pulsador pushbutton y a este le he llamado 20 00:01:40,760 --> 00:01:41,700 etiqueta label 21 00:01:41,700 --> 00:01:45,159 no sé si he puesto ya la distribución 22 00:01:45,159 --> 00:01:46,879 horizontal, sí, he puesto la distribución 23 00:01:46,879 --> 00:01:48,560 horizontal, voy a cambiar los textos 24 00:01:48,560 --> 00:01:50,519 aquí voy a llamar 25 00:01:50,519 --> 00:01:52,599 a este botón, la etiqueta 26 00:01:52,599 --> 00:01:53,459 la voy a llamar 27 00:01:53,459 --> 00:01:54,819 pulsa 28 00:01:54,819 --> 00:01:57,159 aquí 29 00:01:57,159 --> 00:02:00,099 y a esta etiqueta 30 00:02:00,099 --> 00:02:02,140 la voy a poner aquí 31 00:02:02,140 --> 00:02:06,140 contador, el punto y un cero 32 00:02:06,140 --> 00:02:09,629 vale, pues ya tengo aquí 33 00:02:09,629 --> 00:02:11,870 mis dos elementos, voy a guardar mi ventana 34 00:02:11,870 --> 00:02:13,650 guardar 35 00:02:13,650 --> 00:02:15,330 el nombre, lo voy a llamar 36 00:02:15,330 --> 00:02:16,310 main 37 00:02:16,310 --> 00:02:19,770 windows, y aquí tengo 38 00:02:19,770 --> 00:02:21,449 mi ventana, y esto 39 00:02:21,449 --> 00:02:23,150 en Python, ¿cómo lo voy a llamar? 40 00:02:23,449 --> 00:02:25,430 bueno, pues ahora mismo voy a coger 41 00:02:25,430 --> 00:02:27,650 voy a crear 42 00:02:27,650 --> 00:02:28,509 aquí el nuevo archivo 43 00:02:28,509 --> 00:02:30,729 crear un nuevo archivo de texto 44 00:02:30,729 --> 00:02:31,849 va a ser 45 00:02:31,849 --> 00:02:34,710 main.py 46 00:02:34,710 --> 00:02:36,849 en este archivo de texto 47 00:02:36,849 --> 00:02:38,770 voy a escribir 48 00:02:38,770 --> 00:02:40,449 o copiar el siguiente código 49 00:02:40,449 --> 00:02:42,210 voy a copiar este cachito de código 50 00:02:42,210 --> 00:02:45,030 hasta aquí 51 00:02:45,030 --> 00:02:49,449 y voy a añadir 52 00:02:49,449 --> 00:02:51,389 este cachito de código 53 00:02:51,389 --> 00:02:53,229 hasta aquí 54 00:02:53,229 --> 00:02:56,930 ¿de acuerdo? 55 00:02:57,930 --> 00:02:59,150 ¿qué hace este código? 56 00:02:59,150 --> 00:03:10,189 Lo guardo. ¿Qué hace este código? Bueno, aquí estoy importando distintas bibliotecas que necesito. Esto de momento es magia negra. 57 00:03:10,189 --> 00:03:32,610 Entonces, todas las ventanas que creo, bueno, en este caso, cuando al principio le he dado aquí, me ha preguntado, ¿qué ventana quieres crear? Una ventana principal, le he dicho, ¿no? Un main window, pues tengo que poner que quiero crear un main window y la voy a derivar de QOJET, ¿de acuerdo? 58 00:03:32,610 --> 00:03:43,250 Bueno, aquí quiero el constructor de la clase y estos argumentos que le pasa por defecto, estos argumentos los pasa beside, ¿de acuerdo? Los pasa cute. 59 00:03:43,770 --> 00:03:49,050 Entonces yo lo que hago es que estos argumentos tal cuales se los paso al constructor de la casa padre, ya no me complico. 60 00:03:50,210 --> 00:03:55,330 Bueno, esta es una propiedad que tengo aquí definida, de momento no la voy a usar, y esta es la madre del cordero. 61 00:03:55,330 --> 00:03:57,870 esta ventana, este cacho de código 62 00:03:57,870 --> 00:03:58,909 es el que carga 63 00:03:58,909 --> 00:04:01,370 la aplicación, fijaros que yo 64 00:04:01,370 --> 00:04:04,449 cuando he guardado el mainwindow.ui 65 00:04:04,449 --> 00:04:05,590 el diseño este 66 00:04:05,590 --> 00:04:08,150 lo he guardado en el archivo 67 00:04:08,150 --> 00:04:10,310 mainwindow.ui 68 00:04:10,310 --> 00:04:12,409 pues cuando me vengo aquí 69 00:04:12,409 --> 00:04:14,270 lo que estoy diciendo es que 70 00:04:14,270 --> 00:04:16,470 mira, bueno, estos códigos 71 00:04:16,470 --> 00:04:18,509 en Python no se abren 72 00:04:18,509 --> 00:04:20,089 los archivos así, se abren de otra forma 73 00:04:20,089 --> 00:04:21,949 usando open 74 00:04:21,949 --> 00:04:22,889 pero 75 00:04:22,889 --> 00:04:26,029 como esto proviene de C++ 76 00:04:26,029 --> 00:04:28,129 en C++ los archivos se usan 77 00:04:28,129 --> 00:04:30,290 de otra forma, y entonces esto es como una especie 78 00:04:30,290 --> 00:04:32,310 de copia a como se usarían 79 00:04:32,310 --> 00:04:34,110 en C++ los archivos 80 00:04:34,110 --> 00:04:35,689 es una especie de traslación 81 00:04:35,689 --> 00:04:37,990 de lo que se hace en C++ en Python 82 00:04:37,990 --> 00:04:39,889 bueno, pues en C++ 83 00:04:39,889 --> 00:04:41,990 abriríamos el archivo 84 00:04:41,990 --> 00:04:44,230 que se hace con estas dos líneas, aquí le estoy diciendo 85 00:04:44,230 --> 00:04:46,069 mira, el archivo main window 86 00:04:46,069 --> 00:04:47,649 me lo abres con 87 00:04:47,649 --> 00:04:49,350 modo lectura 88 00:04:49,350 --> 00:04:50,569 y ahora 89 00:04:50,569 --> 00:04:53,709 abro el cargador 90 00:04:53,709 --> 00:04:55,509 el cargador 91 00:04:55,509 --> 00:04:57,769 y con el cargador digo que 92 00:04:57,769 --> 00:04:59,709 me cargue la ventana 93 00:04:59,709 --> 00:05:01,610 en este objeto, en este atributo 94 00:05:01,610 --> 00:05:03,370 que voy a llamar window 95 00:05:03,370 --> 00:05:05,709 y luego, si esto lo ejecuto 96 00:05:05,709 --> 00:05:06,910 vais a ver que no se ve nada 97 00:05:06,910 --> 00:05:09,329 bueno, por cierto 98 00:05:09,329 --> 00:05:11,730 estas tres líneas de aquí se ven para arrancar 99 00:05:11,730 --> 00:05:13,670 la aplicación, esto lo que hace es 100 00:05:13,670 --> 00:05:15,410 que prepara Qt para funcionar 101 00:05:15,410 --> 00:05:17,509 creo mi ventana, o sea, este main window 102 00:05:17,509 --> 00:05:18,970 que he creado aquí, la creo 103 00:05:18,970 --> 00:05:20,610 y ejecuto la aplicación 104 00:05:20,610 --> 00:05:21,089 ¿vale? 105 00:05:22,850 --> 00:05:24,449 voy a intentar ejecutarlo 106 00:05:24,449 --> 00:05:32,339 iton3.paint.py 107 00:05:32,339 --> 00:05:34,100 lo abro y veis que no pasa nada 108 00:05:34,100 --> 00:05:35,160 no ha salido la aplicación 109 00:05:35,160 --> 00:05:36,959 no ha salido la ventana, ¿por qué? 110 00:05:37,500 --> 00:05:38,839 porque la ventana no ha salido 111 00:05:38,839 --> 00:05:41,379 y de hecho me da hasta problemas para cerrarla 112 00:05:41,379 --> 00:05:42,980 ¿por qué no ha salido la ventana? 113 00:05:45,899 --> 00:05:47,019 porque las ventanas 114 00:05:47,019 --> 00:05:49,620 cualquier hoja, las ventanas van a ser mostradas 115 00:05:49,620 --> 00:05:51,439 tengo que 116 00:05:51,439 --> 00:05:53,620 invocar el método 117 00:05:53,620 --> 00:05:55,319 show 118 00:05:55,319 --> 00:05:56,519 mostrar 119 00:05:56,519 --> 00:05:59,560 show en inglés significa mostrar 120 00:05:59,560 --> 00:06:01,560 yo puedo cargar la ventana pero no puedo 121 00:06:01,560 --> 00:06:03,740 mostrarla, la puedo dejar ahí preparada para mostrarla 122 00:06:03,740 --> 00:06:05,439 después, pues window.show 123 00:06:05,439 --> 00:06:07,439 lo que hace es mostrar la ventana 124 00:06:07,439 --> 00:06:09,000 si esto ahora lo ejecuto 125 00:06:09,000 --> 00:06:10,920 abro aquí el terminal 126 00:06:10,920 --> 00:06:12,660 y lo ejecuto 127 00:06:12,660 --> 00:06:15,839 veis que ahora si aparece 128 00:06:15,839 --> 00:06:17,500 la ventana, de acuerdo 129 00:06:17,500 --> 00:06:19,779 de momento no hace nada y si doy a cerrar la ventana 130 00:06:19,779 --> 00:06:20,879 la aplicación termina 131 00:06:20,879 --> 00:06:23,420 os habréis fijado 132 00:06:23,420 --> 00:06:25,800 voy a poner aquí un print 133 00:06:25,800 --> 00:06:28,220 voy a poner aquí hola mundo 134 00:06:28,220 --> 00:06:31,639 guardo 135 00:06:31,639 --> 00:06:33,160 ejecuto otra vez 136 00:06:33,160 --> 00:06:35,980 y veis que aquí 137 00:06:35,980 --> 00:06:36,920 no sale hola mundo 138 00:06:36,920 --> 00:06:39,019 aquí en este texto 139 00:06:39,019 --> 00:06:41,740 o sea, lo que ha hecho es 140 00:06:41,740 --> 00:06:43,660 ha cargado 141 00:06:43,660 --> 00:06:45,300 Qt 142 00:06:45,300 --> 00:06:48,040 he creado mi ventana 143 00:06:48,040 --> 00:06:48,899 que es esto de aquí 144 00:06:48,899 --> 00:06:51,899 cuando he llegado a esta línea 145 00:06:51,899 --> 00:06:54,360 he cedido el control a Qt 146 00:06:54,360 --> 00:06:56,920 en estos momentos el control de la aplicación 147 00:06:56,920 --> 00:06:57,939 lo tiene Qt 148 00:06:57,939 --> 00:07:00,600 ¿de acuerdo? por eso aquí no me pone a la mundo 149 00:07:00,600 --> 00:07:02,360 porque de momento estoy en esta línea 150 00:07:02,360 --> 00:07:04,720 o sea, cedo el control de la aplicación a Qt 151 00:07:04,720 --> 00:07:06,600 esto es una feina, porque si yo ahora quiero seguir 152 00:07:06,600 --> 00:07:08,160 haciendo cosas, pues no puedo 153 00:07:08,160 --> 00:07:10,939 hasta que no cierre 154 00:07:10,939 --> 00:07:11,680 la aplicación 155 00:07:11,680 --> 00:07:14,180 hasta que no cierre la aplicación 156 00:07:14,180 --> 00:07:16,300 no me pone el a la mundo 157 00:07:16,300 --> 00:07:18,459 o sea, la aplicación se queda como congelada 158 00:07:18,459 --> 00:07:19,040 en esta línea 159 00:07:19,040 --> 00:07:23,899 ¿por qué? porque 160 00:07:23,899 --> 00:07:26,420 Qt funciona mediante un mecanismo 161 00:07:26,420 --> 00:07:28,339 de eventos, ahora vamos a ver lo que es eso 162 00:07:28,339 --> 00:07:30,660 de los eventos, pero antes de ver los eventos 163 00:07:30,660 --> 00:07:32,480 vamos a ver cómo accedo a los elementos 164 00:07:32,480 --> 00:07:33,180 de la ventana 165 00:07:33,180 --> 00:07:36,600 he cerrado, ah vaya, he cerrado aquí el designer 166 00:07:36,600 --> 00:07:37,959 espera un momentito, doble clic 167 00:07:37,959 --> 00:07:39,180 se abre el designer 168 00:07:39,180 --> 00:07:41,540 sí 169 00:07:41,540 --> 00:07:43,279 aquí tengo la aplicación 170 00:07:43,279 --> 00:07:47,000 Aquí tengo mis elementos 171 00:07:47,000 --> 00:07:48,620 Fijaros 172 00:07:48,620 --> 00:07:50,420 A esta etiqueta 173 00:07:50,420 --> 00:07:51,399 Bueno, le voy a cambiar el nombre 174 00:07:51,399 --> 00:07:53,879 Bueno, sí, la voy a dejar etiqueta 175 00:07:53,879 --> 00:07:56,300 A esta etiqueta la voy a dejar etiqueta 176 00:07:56,300 --> 00:07:57,920 La he llamado etiqueta label 177 00:07:57,920 --> 00:07:59,319 ¿Cómo se hace a los elementos? 178 00:07:59,939 --> 00:08:02,980 Vamos a ver primero un poquito de propiedades 179 00:08:02,980 --> 00:08:04,779 Vamos a buscar aquí 180 00:08:04,779 --> 00:08:05,839 QLabel 181 00:08:05,839 --> 00:08:09,100 ¿Veis que todos los objetos en Qt 182 00:08:09,100 --> 00:08:09,860 Empiezan por Q? 183 00:08:11,800 --> 00:08:12,279 Bueno 184 00:08:12,279 --> 00:08:13,699 esto es un coolable 185 00:08:13,699 --> 00:08:16,300 tiene aquí un montón de métodos 186 00:08:16,300 --> 00:08:17,459 y vais a ver que tiene 187 00:08:17,459 --> 00:08:19,920 sus getters y sus setters, mira 188 00:08:19,920 --> 00:08:21,120 tiene aquí un text 189 00:08:21,120 --> 00:08:23,860 la propiedad text, que tiene 190 00:08:23,860 --> 00:08:25,459 su get 191 00:08:25,459 --> 00:08:28,339 y su set, ¿vale? pues puedo usar 192 00:08:28,339 --> 00:08:30,040 setters para cambiar el valor 193 00:08:30,040 --> 00:08:33,120 yo puedo poner aquí 194 00:08:33,120 --> 00:08:37,100 set.window 195 00:08:37,100 --> 00:08:39,480 set.window 196 00:08:39,480 --> 00:08:46,399 .etiquetalabel 197 00:08:46,399 --> 00:08:48,259 este etiquetalabel que acabo de poner aquí 198 00:08:48,259 --> 00:08:50,220 tiene que ser exactamente 199 00:08:50,220 --> 00:08:52,200 este etiquetalabel 200 00:08:52,200 --> 00:08:53,320 ¿de acuerdo? 201 00:08:56,169 --> 00:08:57,470 ¿vale? y aquí puedo poner 202 00:08:57,470 --> 00:08:59,169 .settext 203 00:08:59,169 --> 00:09:00,950 y aquí le pongo un texto 204 00:09:00,950 --> 00:09:04,909 contador 205 00:09:04,909 --> 00:09:06,090 2.1 206 00:09:06,090 --> 00:09:10,970 lo guardo y si lo ejecuto 207 00:09:10,970 --> 00:09:14,350 veis que pone contador 1 208 00:09:14,350 --> 00:09:16,629 o sea, en designer poníamos contador 0 209 00:09:16,629 --> 00:09:18,389 y ahora pone contador 1 210 00:09:18,389 --> 00:09:19,769 ¿qué ha pasado aquí? 211 00:09:20,289 --> 00:09:22,669 pues que ha ejecutado todo esto 212 00:09:22,669 --> 00:09:24,269 ha creado la ventana, la ha mostrado 213 00:09:24,269 --> 00:09:26,250 y cuando ha llegado a esta línea le hemos dicho 214 00:09:26,250 --> 00:09:27,490 mira, etiqueta nave 215 00:09:27,490 --> 00:09:31,090 le vas a cambiar el texto y vas a poner contador 1 216 00:09:31,090 --> 00:09:33,929 igual que tengo set, tengo get 217 00:09:33,929 --> 00:09:36,129 o sea, podría conseguir el contenido 218 00:09:36,129 --> 00:09:37,970 de la etiqueta 219 00:09:37,970 --> 00:09:40,090 usando el método text que lo tenéis aquí 220 00:09:40,090 --> 00:09:47,129 O sea, me he ido aquí a la documentación de Python y la documentación de Python es vital para enterarnos de qué métodos tienen, qué propiedades tienen. 221 00:09:47,129 --> 00:10:25,110 De label, iros haciendo ahora una chuletilla, de label, de cool label, me interesan text y set text, ¿vale? Me interesan esos dos métodos, ¿vale? 222 00:10:25,129 --> 00:10:33,129 Bueno, pues tengo una chuleta en la que voy apuntando los distintos métodos que voy a ir aprendiendo. 223 00:10:33,129 --> 00:10:38,129 Chuleta. Bueno, pues aquí tengo mi chuleta. 224 00:10:38,129 --> 00:10:43,129 ¿Vale? Pues de label tengo setText y setTest. 225 00:10:43,129 --> 00:10:51,129 Pero de momento no puedo hacer gran cosa, ¿no? Puedo cambiar los textos de las etiquetas, pero eso ya lo puedo hacer aquí con Designer. 226 00:10:51,129 --> 00:11:00,710 Vamos a ver el passButton. Voy a buscar aquí. PassButton. PassButton significa botón de presionar, ¿no? 227 00:11:03,340 --> 00:11:11,580 Viene a decir botón de presionar. Bueno, el passButton, vais a ver que también tiene el método text, ¿de acuerdo? 228 00:11:11,580 --> 00:11:29,980 O sea, el passButton también tiene el método text. También tiene el método setText, ¿de acuerdo? 229 00:11:30,379 --> 00:11:32,980 texto, por supuesto 230 00:11:32,980 --> 00:11:34,940 texto 231 00:11:34,940 --> 00:11:37,200 vale, tiene el método 232 00:11:37,200 --> 00:11:39,840 text, tiene el setText 233 00:11:39,840 --> 00:11:41,679 no lo voy aquí porque lo tiene su padre 234 00:11:41,679 --> 00:11:44,120 lo tiene el astralbutton 235 00:11:44,120 --> 00:11:44,940 si pincho aquí 236 00:11:44,940 --> 00:11:46,799 me salta el astralbutton 237 00:11:46,799 --> 00:11:49,080 y aquí por algún lado, veis, hay text, ¿no? 238 00:11:50,240 --> 00:11:52,000 que tiene el setText y el setText 239 00:11:52,000 --> 00:11:54,039 vale, voy a volver para atrás 240 00:11:54,039 --> 00:11:55,360 vuelvo para atrás 241 00:11:55,360 --> 00:11:56,440 estoy de nuevo en pastButton 242 00:11:56,440 --> 00:11:57,299 y luego 243 00:11:57,299 --> 00:11:59,840 Ah, bueno, espera 244 00:11:59,840 --> 00:12:01,940 Vuelvo a PassButton, al método 245 00:12:01,940 --> 00:12:03,919 AstrapButton, y el método AstrapButton 246 00:12:03,919 --> 00:12:06,179 Si veis aquí todas las propiedades, tiene una cosa que se llama aquí 247 00:12:06,179 --> 00:12:07,919 Señales, esto de las señales 248 00:12:07,919 --> 00:12:08,500 ¿Qué significa? 249 00:12:09,259 --> 00:12:12,059 Bueno, y ves que por ejemplo 250 00:12:12,059 --> 00:12:13,340 Esta que pone, ClickIt 251 00:12:13,340 --> 00:12:15,379 ¿De acuerdo? 252 00:12:15,980 --> 00:12:17,899 ClickIt es la señal que se emite 253 00:12:17,899 --> 00:12:19,740 Cuando un botón es activado, veis la 254 00:12:19,740 --> 00:12:21,299 Explicación que pone aquí, ¿vale? 255 00:12:21,720 --> 00:12:23,940 ¿Esto cómo funciona? Bueno, pues cuando yo hago 256 00:12:23,940 --> 00:12:25,240 Click en un botón 257 00:12:25,240 --> 00:12:28,139 voy a poder añadirle 258 00:12:28,139 --> 00:12:30,039 un método que se va a ejecutar 259 00:12:30,039 --> 00:12:31,340 o sea, cada vez que yo haga clic 260 00:12:31,340 --> 00:12:34,379 yo cojo y lanzo en mi aplicación 261 00:12:34,379 --> 00:12:36,580 y haga clic en este botón 262 00:12:36,580 --> 00:12:38,200 puedo añadirle un método 263 00:12:38,200 --> 00:12:40,399 o varios que se van a ejecutar cada vez que pulso 264 00:12:40,399 --> 00:12:41,659 el botón y que hagan cosas 265 00:12:41,659 --> 00:12:45,980 por ejemplo, me voy aquí 266 00:12:45,980 --> 00:12:46,899 a mi código 267 00:12:46,899 --> 00:12:50,200 voy a añadir aquí 268 00:12:50,200 --> 00:12:50,960 un nuevo método 269 00:12:50,960 --> 00:12:57,419 se suelen llamar así 270 00:12:57,419 --> 00:13:05,440 onClicket 271 00:13:05,440 --> 00:13:08,509 self 272 00:13:08,509 --> 00:13:10,309 dos puntos 273 00:13:10,309 --> 00:13:11,610 y aquí puedo decirle algo 274 00:13:11,610 --> 00:13:12,730 por ejemplo 275 00:13:12,730 --> 00:13:15,789 self.window 276 00:13:15,789 --> 00:13:16,289 ahí va ya 277 00:13:16,289 --> 00:13:25,929 window.etiquetalabel.sectext 278 00:13:25,929 --> 00:13:29,850 botón 279 00:13:29,850 --> 00:13:33,950 vamos a ejecutar 280 00:13:33,950 --> 00:13:52,919 Bueno, de momento no hace nada. Esta línea me la voy a cargar. Voy a meter aquí un espacio y voy a poner aquí. Se conectan las señales. 281 00:13:52,919 --> 00:13:55,960 Bueno, hemos visto que el botón 282 00:13:55,960 --> 00:13:58,980 El botón 283 00:13:58,980 --> 00:14:02,580 Que no me acuerdo como lo he llamado 284 00:14:02,580 --> 00:14:04,360 El botón este 285 00:14:04,360 --> 00:14:05,759 Pulsador Pass Button 286 00:14:05,759 --> 00:14:08,220 Control C 287 00:14:08,220 --> 00:14:11,970 Control V 288 00:14:11,970 --> 00:14:14,830 Tiene la señal 289 00:14:14,830 --> 00:14:15,409 Click It 290 00:14:15,409 --> 00:14:16,970 ¿De acuerdo? 291 00:14:17,870 --> 00:14:19,490 Pues aquí puedo poner Connect 292 00:14:19,490 --> 00:14:24,120 Y le pongo que 293 00:14:24,120 --> 00:14:25,759 Conecte 294 00:14:25,759 --> 00:14:28,799 Y le pongo que conecte 295 00:14:28,799 --> 00:14:31,940 el onClicked 296 00:14:31,940 --> 00:14:36,399 self.onClicked 297 00:14:36,399 --> 00:14:40,159 vamos a ejecutarlo 298 00:14:40,159 --> 00:14:43,340 aquí lo tengo 299 00:14:43,340 --> 00:14:44,519 fijaos que ahora pone 300 00:14:44,519 --> 00:14:46,659 contador 0 301 00:14:46,659 --> 00:14:49,220 cuando pulse el botón 302 00:14:49,220 --> 00:14:50,120 o sea, cuando haga click 303 00:14:50,120 --> 00:14:51,480 en esta línea estoy diciendo 304 00:14:51,480 --> 00:14:54,259 mira, cuando en el passButton 305 00:14:54,259 --> 00:14:55,340 alguien haga click 306 00:14:55,340 --> 00:14:58,019 pues me ejecutas el método 307 00:14:58,019 --> 00:14:59,919 onClicked 308 00:14:59,919 --> 00:15:01,580 este método, y el método onClick 309 00:15:01,580 --> 00:15:03,799 lo que hace es que coge la etiqueta y pone 310 00:15:03,799 --> 00:15:06,139 y le cambia el texto a botón pulsado 311 00:15:06,139 --> 00:15:07,860 vamos a probar 312 00:15:07,860 --> 00:15:10,000 tengo aquí mi este, si pulso 313 00:15:10,000 --> 00:15:11,519 veis que pone contador 0, si pulso 314 00:15:11,519 --> 00:15:14,120 pone botón pulsado, si lo vuelvo a pulsar 315 00:15:14,120 --> 00:15:16,120 realmente lo está cambiando, pero como el texto es el mismo 316 00:15:16,120 --> 00:15:17,700 pues no se nota 317 00:15:17,700 --> 00:15:18,960 pero realmente cada vez que pulso 318 00:15:18,960 --> 00:15:20,659 me está ejecutando esto 319 00:15:20,659 --> 00:15:22,919 esto no tiene gracia, ¿no? 320 00:15:23,179 --> 00:15:25,639 bueno, veis por aquí que ya tenía definido aquí un atributo 321 00:15:25,639 --> 00:15:27,480 que llamó de contador y le he puesto 0 322 00:15:27,480 --> 00:15:55,179 Entonces yo podría hacer cosas más divertidas. Podría poner self.contador más igual 1 y aquí decir que contador de 0.format y le pongo aquí self.contador. 323 00:15:55,179 --> 00:15:57,340 y le doy alegría 324 00:15:57,340 --> 00:16:00,600 voy aquí, abro, ejecuto 325 00:16:00,600 --> 00:16:02,500 y ahora cada vez que pulso aquí 326 00:16:02,500 --> 00:16:04,200 ¿veis lo que sucede? 327 00:16:04,580 --> 00:16:06,639 contador 1, 2, 3, 4, 5, 6, 7, 8 328 00:16:06,639 --> 00:16:08,080 ¿veis lo que sucede? 329 00:16:10,340 --> 00:16:11,879 va cambiando el contador 330 00:16:11,879 --> 00:16:14,940 podría pues 331 00:16:14,940 --> 00:16:17,519 añadirle más elementos 332 00:16:17,519 --> 00:16:18,960 pero de momento lo voy a dejar aquí 333 00:16:18,960 --> 00:16:20,779 y este cachito de código 334 00:16:20,779 --> 00:16:22,080 que veis aquí 335 00:16:22,080 --> 00:16:24,779 lo voy a mantener como base 336 00:16:24,779 --> 00:16:28,019 este cacho de código 337 00:16:28,019 --> 00:16:30,120 lo voy a usar en el resto de aplicaciones 338 00:16:30,120 --> 00:16:32,080 como base para hacer cosas 339 00:16:32,080 --> 00:16:34,019 bueno, pues aquí tenemos 340 00:16:34,019 --> 00:16:35,940 nuestro primer evento, el botón click