Quer aprender Python construindo um projeto real? Neste vídeo, você vai criar um aplicativo de cronômetro em Python do zero usando Tkinter, a biblioteca nativa para criação de interfaces gráficas.
Durante a aula você aprenderá:
✅ Como criar uma interface gráfica com Tkinter
✅ Como atualizar o cronômetro em tempo real
✅ Como iniciar, pausar e resetar o cronômetro
✅ Como organizar melhor o código Python
✅ Boas práticas para projetos desktop
Este projeto é ideal para quem está começando em Python e deseja praticar programação criando aplicações úteis.
Se este vídeo te ajudar, não esqueça de deixar o 👍, inscrever-se no canal e ativar o sino para não perder os próximos projetos em Python.
#Python #Tkinter #PythonParaIniciantes #Programação #DesktopApp #Cronômetro #ProjetosPython
Show More Show Less View Video Transcript
0:00
Olá pessoal, sejam bem-vindos de volta
0:01
ao canal Jão aqui falando. Hoje vamos
0:02
fazer um pequeno projeto de cronômetro,
0:04
OK? Usando Python e esses projetos que
0:07
nós continuamos a criar como sempre é
0:08
para que tu possas desenvolver a sua
0:10
lógica de programação, OK?
0:11
Principalmente se tu iniciante que já
0:13
terminou sobre Python, o básico, e
0:16
também gostarias, tipo, de pô em prática
0:18
tudo que tu tens estudado sobre Python,
0:21
fazendo esse projeto aqui vai lhe ajudar
0:22
bastante. Bom, OK? Os pré-requisitos
0:24
para que tu possas fazer esse esse mesmo
0:26
projeto é bastante simples. Tu tens
0:28
apenas que saber a biblioteca Python
0:29
Tick Inter, não se preocupa, deixarei o
0:31
link da playlist sobre essa mesma
0:33
biblioteca aqui na descrição desse
0:34
vídeo, onde tu podes ir revisar um
0:36
pouquinho. É algo que tu podes estudar
0:38
em média até uma ou duas horas, vais
0:39
pegar o conceito como é que se cria a
0:41
interface gráfica em Python. Então assim
0:44
que tu terminares aquele mesmo, somente
0:46
assim que podes vir aqui fazer esse
0:48
mesmo projeto. OK? Agora se tu já sabes
0:50
sobre inter põe mão na mata diretamente.
0:53
Então como eu disse, esse projeto é
0:54
bastante bom, vai ajudar com que tu
0:56
possas pôr em prática as suas ideias ou
0:58
possa pôr em prática a sua criatividade
1:01
fazendo esse mesmo projeto. OK? Então
1:02
esse é um pequeno projeto de cronómico
1:04
onde nós podemos iniciar o mesmo
1:06
cronómico. Ele vai vai fazendo a
1:08
contagem do do tempo. Podemos pausar,
1:11
OK? E assim que nós pausar também
1:13
podemos eh tipo reiniciar de novo ou
1:17
melhor dizer dar sequência. É só clicar
1:18
em OK, ele vai ser aqui. E também bem
1:20
como podemos resetar o mesmo cronômetro,
1:22
OK? É só clicar aqui no botão resetar,
1:24
ele vai resetar para zero e podemos dar
1:27
início de novo ao tempo. Como eu disse
1:29
neste tutorial, vamos criar esse pequeno
1:30
projeto, OK? Como você põe em mente,
1:32
isto é para que tu possas praticar
1:35
Python. E também principalmente esse
1:36
mesmo projeto, nós vamos usar
1:38
programação orientada objeto em Python.
1:40
Então se tu estás a estudar programação
1:41
orientada objeto em Python, esse é um
1:43
bom projeto para que tu possas praticar
1:45
programação orientada objeto em Python.
1:47
Muito bem, agora vamos dar início ao
1:49
nosso projeto. O que tu tens que fazer a
1:50
seguida é abra o seu código editor de
1:52
texto e vamos começar criando este mesmo
1:55
projeto do início até ao fim. OK? Vamos
1:58
tentar entender a lógica por detrás do
2:01
projeto e somente assim eu acredito que
2:04
você vai conseguir p também a sua
2:06
criatividade. E como eu sempre digo, se
2:08
o meu projeto é cor branco, você o teu
2:10
projeto deve ser cor vermelho, cor
2:12
verde. Nunca obtém o mesmo resultado com
2:14
o meu projeto, ok? O teu projeto deve
2:17
sempre ser diferente em relação ao meu.
2:19
Assim eu vou poder entender. Não, você
2:20
sim realmente estás a as coisas em
2:23
prática menos estás apó sua criatividade
2:25
em prática. OK? É uma forma também só de
2:27
você poder, tipo, já sabes, né? Melhorar
2:30
as coisas e não só apenas fazer copy
2:32
paste, ok? Tipo, como se fosse um
2:33
Roblox, tá apenas copiando o que eu
2:35
estou escrevendo. Se eu colocar cor
2:37
vermelho, você coloca a cor verde. Se eu
2:38
colocar cor verde, tu colocas cor
2:40
vermelha ou qualquer cor. Mas devemos
2:41
obter no fim do projeto e projetos
2:44
diferentes. OK? pode ser de cor
2:46
diferente ou tu podes colocar esse botão
2:47
aqui acima se qualquer local, mas tenta
2:50
entender o conceito por detrás somente
2:52
assim que você vai conseguir tipo fazer
2:53
as modificações necessárias e
2:55
principalmente hoje na na era da
2:57
inteligência artificial, ok? Onde muita
2:58
gente só copia códigos que são gerados
3:00
pela inteligência artificial. Então é
3:02
muito bom você entender o seu código
3:03
para que tu possas saber implementar
3:05
novas coisas. Tu bem quando se tiver uma
3:07
ideia na cabeça, OK? tu vais conseguir
3:10
pôr essa mesma ideia em prática e também
3:12
ou talvez vais conseguir tipo saber o
3:14
que perguntar na inteligência oficial.
3:16
Não, eu gostaria que tu trocasse esse
3:17
botão aqui. Em vez dele ser verde, tu
3:19
colocas, vou gostaria que ele seja azul,
3:21
mas tu vais saber especificar exatamente
3:24
onde apenas que tu queres que a mudança
3:25
concorre no seu código. Mão na massa.
3:28
Vamos lá. Então, como eu disse, OK? Tu
3:30
vais abrir o seu código editor, eu já
3:31
estou na pasta, vou criar o meu projeto.
3:33
OK? Então, primeira coisa que vamos
3:34
fazer é o seguinte, nós vamos criar um
3:35
novo arquivo Python. Eu vou chamar esse
3:37
meu arquivo de main ou main. Pip. Tu
3:42
podes dar qualquer nome que tu bem
3:43
quiseres, OK? Não faz mal. Eu darei o
3:46
nome de pois eu acho que é muito mais
3:48
simples para mim para que eu possa
3:49
memorizá. Assim que eu dei o meu nome,
3:52
agora vamos fazer o seguinte, OK?
3:53
Primeiramente nós devemos importar o
3:55
tick dentro do nosso
3:57
eh script. postin da biblioteca para
3:59
permitir que nós possamos criar essa
4:01
interface que nós temos aqui. Essa toda
4:04
a interface será criada pela biblioteca
4:06
do Python que é uma biblioteca que nos
4:08
ajuda a nós criarmos interface gráfico
4:09
em Python. Se tu não sabes, o link
4:11
estará na descrição desse mesmo vídeo,
4:13
onde tu podes estudar o Python. Após
4:16
isso, vamos fazer o seguinte. Front
4:17
click enter import, OK? Vamos usar aqui
4:20
o asterisc.
4:23
Esse asística aqui significa tipo a
4:25
partir de ginter tudo que estinter nós
4:27
estamos a importar para dentro desse
4:28
mesmo script. Após isto vamos fazer
4:30
também o seguinte importo
4:41
toda frase completada. Ok? É corriso
4:43
pela qual que aqui nós abreviamos este
4:45
asas significa que essa palavra aqui
4:47
tentin nós vamos referir ele como tk
4:51
tipo uma forma mais abreviada em vez de
4:52
nós escrevermos toda a palavra completa.
4:54
Então isso é mais uma das
4:55
funcionalidades do Python. Quando tu
4:57
estás a importar uma biblioteca tu podes
4:59
tipo encortar o nome dessa biblioteca,
5:01
principalmente se essa biblioteca tem um
5:02
nome bem comprido, OK? Usando ess as tu
5:05
podes importar o nome, é como se fosse
5:07
uma ok? Perfeito. Após isso, como nós
5:11
dissemos, nós vamos criar esse projeto
5:13
usando a programação orientada a objeto
5:15
em Python. Então, após isso, vamos fazer
5:17
o seguinte, vamos criar a nossa classe
5:19
que vai ser o seguinte, classe, OK? Eh,
5:22
classe cronômetro. Cronômetro
5:26
tenho que editar devagar que eu poo uma
5:28
palavra bem comprida. Classe cronômetro
5:30
vai ser dois pontos. Nós já sabemos que
5:33
quando estamos a criar classe, OK? Eh,
5:37
isso aqui, essa palavra aqui, o nome da
5:39
classe deve ser maiúscula, ok? Devem
5:41
estar com uma letra maiúscula. Uma forma
5:42
convencional é uma forma recomendada,
5:45
OK? É bom que nós sempre as classes com
5:47
letra maiúscula.
5:50
Então, agora após isto vamos fazer, eu
5:53
vou fazer o seguinte, OK? Eu estou a
5:54
obter esse sinal aqui vermelho como se
5:56
fosse erro, não sei o que. Então eu vou
5:58
fazer o seguinte passo, é só para mim
6:00
poder testar para ver o que está
6:01
aconteceu,
6:03
então quer dizer que tá tudo mesmo
6:04
funcionando. Perfeito.
6:07
Após isto, nós vamos eh dar início, OK,
6:12
à nossa cria, a nossa vamos criar a
6:14
nossa janela principal, tipo, vamos
6:16
criar apenas, tipo, essa toda a janela,
6:18
OK? Toda a estrutura, não com os
6:19
desenhos, desenhos, botões, não, apenas
6:22
só a janela. para vamos fazer o
6:24
seguinte, eu vou criar um o meu
6:27
iniciator que vai seguir_IT
6:31
tá aqui apareceu. Teremos aqui self
6:35
vírgula e vamos chamar a vamos passar
6:38
janela dessa forma aqui, OK? Esta janela
6:41
que será a nossa interface mais
6:43
praticamente. Após disto, eu vou ter o
6:44
seguinte: self ponto janela. Ok, ele
6:49
será igual a janela. para que nós
6:52
possamos nos referir sempre à nossa
6:54
janela. Eu posso remover esse passe já
6:56
não necessito dele. Depois disso, eu vou
6:59
definir o título da minha janela.
7:00
Self.jan
7:03
p title. OK. Isso vai ser igual a, vamos
7:09
chamar de cronômetro. OK. Cronômetro. Eu
7:12
sei que cronômetro leva acento, mas o
7:14
meu teclado está em inglês, eu não faço
7:16
a mínima ideia onde é que fica o acento
7:18
complexo, mas ele leva acento aqui. O
7:20
quê? no nome.
7:22
Perfeito. Também teremos o nosso
7:24
self.jan
7:27
pge geography. Geômetro, não é?
7:29
Geografia. OK. Geômetro. Esse geometro
7:31
ele permitem que nós possamos definir a
7:34
a largura, a a largura e o comprimento
7:36
da nossa janela, OK? Então, para a
7:38
largura aqui, assim, na forma
7:39
horizontal, nós daremos eh eu darei 470.
7:44
470.
7:46
Depois vamos colocar aqui o X, OK? E
7:49
para a altura eu darei uns 280. Acho que
7:53
vai ser suficiente. Perfeito. Após isto
7:56
iremos também geometry ou desculpa, ou
7:59
melhor dizer. Após isto teremos de novo
8:02
o seguinte self ponto janela pontisable.
8:09
Okizable dessa forma aqui. Esse reizable
8:12
é ler o seguinte, OK? Nós não queremos
8:14
tipo alterar sempre o tamanho dessa
8:16
janela. Tá? Estás a ver aqui? Eu não
8:18
consigo aderir ao tamanho dessa janela,
8:19
ok? Eu quero que ele seja tipo um
8:21
tamanho fixo aqui. Esse botão foi
8:23
desativado tudo isso. Então esse reável
8:25
aqui ele ajuda com que eu possa obter
8:27
esse mesmo efeito. Pela qual que eu
8:29
virei aqui vamos fazer um páss aquela
8:32
parte que eu disse que tu não podes
8:34
obter o mesmo resultado que eu então se
8:36
eu aqui estou a colocar esse zel tu não
8:38
colocas. uma das formações você poder
8:41
acrescentar algo que tu vais fazer
8:43
sozinho. E o mesmo, ok? Perfeitão. First
8:46
aqui também vamos fazer a coisa per esse
8:48
first, primeiro first é para que eu não
8:49
possa tipo alterar a largura e esse
8:53
segundo é para que não possa alterar a
8:55
altura. Ok? Fse dessa forma. Perfeito.
9:00
Pois iso também teremos o seguinte, ok?
9:02
Self ponto janela. Aqui sempre quer
9:05
janela ponfig.
9:08
Ok. Config dessa forma aqui. Configure.
9:11
Configure. Agora aqui vamos configurar o
9:14
background da nossa janela, que é tipo o
9:17
background daí o fundo da nossa janela.
9:20
Isso vai ser BG que define a cor do
9:23
fundo. Ele vai ser igual a
9:26
sempre assim que é asterisco. Eu vou
9:29
usar a cor F0,
9:33
OK? F2
9:36
F5.
9:38
Essa é a cor que eu vou usar. Salvei.
9:40
Ok. Então, após isto, OK? Após eu tentou
9:44
definir o meu init, agora vamos fazer o
9:47
seguinte, OK? Eu virei aqui, vou sair
9:49
fora da classe, vamos tipo iniciar.
9:53
Então, vamos fazer o seguinte, if, para
9:54
que nós possamos rodar isso aqui, OK? If
9:59
name
10:02
igual, OK?
10:05
Faço o seguinte, main
10:09
main desta forma aqui undok
10:15
dois pontos. Nós nós eh faremos o
10:18
seguinte, eu coloquei dois pontos. Esse
10:21
dois pontos não funcionou.
10:23
Dois pontos aqui. Dois pontos vem para
10:26
cá. Perfeito. Esse meu teclado tá
10:28
maluco. Ok. Dois pontos. Perfeito.
10:31
Então, ah, eu aqui errei, agora entendo
10:33
por veja, eu aqui cometi um erro. Aqui
10:35
são dois igual, deve ser igual que se
10:37
fosse uma comparação. Dê enter. Sim, aí
10:40
sim. Agora está funcionando. Nós teremos
10:41
o seguinte, janela. Isso é para que nós
10:43
possamos cordar o nosso aplicativo, OK?
10:45
Janela igual a TK.
10:48
TK. Veja, esse TK aqui, o T é maiúscula,
10:52
o K é minúscula. OK? TK. Depois vamos
10:56
ter appá
10:59
igual a
11:01
cronômetro, OK? Vamos chamar o nosso que
11:03
lá Vamos passar à janela, ok? Pronome
11:06
janela e depois vamos chamar janela.
11:09
Esta parte aqui é muito importante.
11:11
Ponto main lu. Isso aqui é que permite
11:13
com que, por exemplo, essa janela fique
11:15
aqui dessa forma aqui rodando sem que
11:17
seja interrompido. Ok? Até que esqueci
11:19
de usar esse cronômetro. Exerfeito.
11:24
Main loop. Dessa forma aqui. V em loop
11:27
abrir e fechamos. Salvei. Agora vamos
11:29
rodar isso para ver se vai funcionar ou
11:31
não. Se eu rodar o meu programa e é bom
11:34
vamos puxar isso para cima para que nós
11:36
possamos ver caso vamos obter algum erro
11:38
ou não. Bum. Como podemos ver, já temos
11:41
a nossa interface principal. Ok?
11:47
Então, perfeito. Já temos a nossa janela
11:49
principal. Agora vamos começar tipo
11:52
criar a interface dentro dessa nossa
11:54
janela que nós temos aqui. Então para
11:57
tal nós faremos o seguinte. Nós viremos
12:01
aqui dentro do nosso
12:05
da nossa classe, OK? Aqui no init nós
12:08
faremos o seguinte, eu sairei do init,
12:10
virei aqui, vamos criar uma nova função.
12:12
Essa nova função vai ser criar ok
12:17
interface. Esta função que vamos criar é
12:22
para que nós possamos criar a interface
12:23
gráfica, mas é tipo os botões todo, tudo
12:26
isso que nós temos aqui dentro,
12:29
ele servirá para isso. Então eu posso
12:31
parar de derrotar esse senhor aqui
12:32
paraar. Ok, então aqui teremos o
12:36
seguinte, vamos ter dois pontos de
12:40
é acho que quase me esqueci de passar
12:41
aqui o self. Nunca se esqueça de passar
12:43
o self, OK? para que nós possamos fazer
12:45
a utilização de tour que foi
12:47
inicializado aqui. Perfeito. Então nós
12:49
teremos o seguinte def. Agora para que
12:51
nós possamos criar a nossa interface,
12:53
isso vai ser o seguinte, OK? Então
12:57
eu vou criar um frame chamado container.
12:59
É que vai ser tipo como se fosse tipo o
13:01
contêiner principal, OK? Até posso
13:03
comentar, vou dizer assim, contêiner
13:05
principal, contêiner
13:08
princi
13:11
coner principal. Então esse meu
13:13
contêiner ele vai seguind, eu vou criar
13:15
uma variável chamada contêiner, ok?
13:18
Container ele vai ser igual a rem. É
13:21
como se fosse a base principal do
13:23
aplicativo, OK? Tipo toda essa base,
13:26
esse conteiner que estamos a criar, tudo
13:27
isso aqui estará dentro dele, OK? É como
13:29
se fosse tipo uma base ou alicer, vamos
13:32
assim dizer. da casa, tá? Isso vai ser
13:34
frame self
13:36
ponto janela. OK? Pois nós devemos eh
13:40
colocar esse frame dentro de uma janela,
13:43
ok? Ou dentro de um de janela vírgula.
13:45
Vamos definir o background dele. BG será
13:48
igual a
13:51
o background dele vai ser igual a
13:55
essa mesma cor aqui. Até posso embora já
13:57
copiar. Vai tá escrever mais. Ok, isto
14:00
tem para cá e OK, fechei. Perfeito.
14:05
Vamos agora para a próxima linha que vai
14:06
ser o seguinte, OK? Vamos chamar de novo
14:09
o containers. Container, ó, container
14:14
para baixo. Ponto. Vamos usar o pack.
14:17
OK. Pack. Vamos dizer expand.
14:21
Apareceu aqui o expand. Expand vai ser
14:23
igual a true. OK. para que ele possa
14:26
tipo cobrir toda a parte da nossa
14:28
janela, que da nossa interface, da nossa
14:30
parte principal, OK? Eh, expande. E
14:35
também vamos ter mais outras
14:37
propriedades bastante importantes, como
14:38
por exemplo, o fill. O field vai ser
14:41
igual a BF, deve ser letra maiúscula,
14:43
OK? Dessa forma aqui BOV, tipo os dois,
14:46
OK? E teremos o pad X. Pad será igual a
14:50
20. dar sempre um pouquinho de espaço.
14:52
Se vocês notarem, tipo aqui ele tem um
14:55
pouco de espaço começando esse entre
14:57
aqui a janela principal e esse contêiner
15:00
que tem um pouquinho de espaço. Esse 20
15:02
que demos aqui vírgula pad eh será igual
15:08
a 20 também. A mesma coisa também que
15:11
está acontecendo aqui aqui para cima
15:13
para ter aqui também tem um pouquinho de
15:15
espaço. É o que estamos a fazer aqui.
15:17
OK? Então agora, após nós darmos esse
15:19
espaço, nós faremos o seguinte, OK?
15:22
Vamos descer um pouquinho. Salvei e eu
15:26
virei para aqui, OK? Eu farei o
15:29
seguinte, vou chamar, vamos agora chamar
15:31
aqui o nosso criar interface para que
15:33
também possa ser inicializado para nós
15:34
rodarmos o aplicativo. Então, para tal,
15:36
eu farei o seguinte, OK? Eh, self ponto,
15:40
tás a ver? Essa é a beleza de se usar a
15:43
programação ental objeto. Se nós
15:45
quisermos fazer uso de algo, iso nós
15:47
chamamos ele. Então, def self p criar
15:51
interface, abrir e fechar. OK, salvei.
15:55
Agora vamos rodar para ver se isso vai
15:57
funcionar ou não. Eu vou dar o meu
15:58
código.
16:03
Um, ele aparece só dessa forma aqui. OK.
16:04
Não, como ainda não tem praticamente
16:06
nada dentro do meu contêiner e também
16:08
ele é quase a mesma cor com a janela
16:11
principal. OK. Deixa-me só trocar de cor
16:14
para ver se vai acontecer algo. Apareceu
16:17
isso posso já trocar aqui. Deixa só
16:20
trocar OK de cor.
16:22
Salvei e eu vou dar de novo.
16:28
Como podemos ver aqui o meu contêiner
16:30
está presente. Já temos aqui o nosso
16:32
contêiner. Agora vamos voltar a cor que
16:34
estava. Control Z. Voltei a cor que
16:38
estava. OK. Perfeito. Agora após o
16:40
conêiner vamos criar um card principal.
16:44
OK. Esse card ele é parecido com
16:47
container. Então isso logo quer dizer
16:49
que eu vou apenas copiar aqui o meu tudo
16:53
isso aqui. Essa é a beleza a parte que
16:55
eu mais gosto. Copiar e colar. Eu vou
16:58
colar aqui. Ok. Isto eu tenho que recuar
17:01
um pouquinho, OK? Recuer ele. E isto
17:04
aqui vamos chamar de card. O que que eu
17:07
fiz?
17:10
OK. Eu trocarei esse nome para card em
17:13
vez de container. Card.
17:16
Mesma coisa aqui também.
17:19
Vamos trocar para card.
17:21
Perfecto. Agora, após trogar para cá,
17:23
aqui também vai ser card principal.
17:26
Principal vai ser card principal.
17:28
Perfeito. Agora vamos fazer aqui apenas
17:30
algumas modificações, OK? Aqui em vez de
17:34
ser essa cor, vamos passar para white.
17:37
White que é cor branca, ok? E aqui vamos
17:40
usar mais um outro estilo chamado
17:42
relief. Relief. Esse relief permite que
17:45
nós possamos passar possamos passar um
17:47
estilo. Relief será igual a readade, OK?
17:51
Re esse senhor aqui. Eh, salvei. Ok.
17:56
Então agora, depois disso também vamos
17:59
eh usar um algo vírula que chamamos de
18:01
BD para bandid. OK? O meu
18:04
[limpando a garganta] B ser de
18:06
agora aqui embaixo,
18:09
OK? Aqui eu não vou necessitar disso,
18:12
ok? Vamos ver isto, OK? Fica apenas
18:16
assim. Expand e f off.
18:19
Perfeito.
18:21
E agora ele, esse carta aqui, ele vai
18:23
ser, vai ser inserido dentro do nosso
18:26
contêiner. Então, logo vamos remove aqui
18:28
o surf janela. Op, surf janela vai e
18:32
sairá daqui. Ele vai ser o contêiner.
18:36
Perfeito. Agora, se nós rodamos aqui
18:38
para que nós possamos testar aqui já
18:40
temos
18:43
um, como podemos aqui, ele já tá a
18:45
marcar branco, OK? da forma que está
18:47
aqui. Então, já temos essa parte aqui.
18:51
Agora o que nos falta ou que vamos
18:53
fazer, melhor dizer, é passarmos aqui
18:54
esse momento. OK? Vamos agora começar
18:56
tipo inserir as coisas aos poucos. Vamos
18:58
passar aqui o cronômetro. Então, para
19:00
tal vai ser o seguinte, nós veremos aqui
19:03
um pouquinho abaixo. Vamos passar o
19:05
título. OK. Deixa-me comentar aqui.
19:08
Título, o título do a agora para o
19:10
título. Vamos, isso vai ser o seguinte,
19:13
OK? Eu tirei aqui o meu, vou criar uma
19:15
par chamada título. Esse título ele será
19:18
igual a label.
19:20
Label. OK. Vamos abrir e fechar. Eu
19:23
posso fazer até dessa forma aqui, será
19:25
melhor. Ele estará dentro do card.
19:29
Estará dentro do card vírgula e ele terá
19:32
como texto o seguinte, OK? Texto será
19:35
igual a aqui vamos passar o título
19:37
principal do nosso app, OK? Veja, eu
19:40
irei usar um ícone, OK? Se se tu notares
19:44
aqui tem esse ícone aqui. Então esse
19:46
ícone tu podes conseguir em vários e em
19:49
vários locais. É como se e DB e con é um
19:53
imões, OK? Então praticamente são textos
19:57
se não bem no fundo, OK? Então tu podes
19:59
usar esse
20:01
qualquer imó que tu veres e utilizar
20:03
aqui. Ok? Então a mesma coisa ve aqui no
20:06
teclado não tem. Eu já eu havia copiado
20:09
isso, então vou só apenas colar aqui.
20:10
Como eu disse, isso aqui é um tu podes
20:12
usar qualquer que tu bem que quiseres
20:13
aqui, OK? Vamos passar aqui o
20:15
cronômetro.
20:18
E também vamos ter a nossa fonte, OK?
20:21
Agora fonte que permite com que nós
20:23
possamos definir o tipo de letra e o
20:25
tamanho. Então eu usarei uma ponta
20:28
areal, que é vírgula,
20:32
tamanho 12, vírgula e negritado. OK? Vai
20:35
ser B dessa forma aqui e vamos passar
20:38
aqui. Nunca se esqueça de colocar sempre
20:41
a vírgula aqui no fim, ok? Quando
20:43
terminas o car, coloca vírgula aqui
20:44
também, vírgula, aqui também vír, pois
20:46
senão vais ter um bom erro que vai te
20:48
dar dor de cabeça, ok? E o background
20:52
será igual a white, ok? Que é cor branco
20:57
vai ser igual a white, vírgula sempre
20:59
assim, ok? FG F ground ele será igual a
21:04
como sempre eh, cabinal as a cardinal
21:11
a 1 a dessa forma aqui. Eh, depois
21:16
coloca 2 e essa forma, OK? É como se
21:19
fosse um um azul escuro ou preto escuro.
21:22
Preto escuro, meu Deus, preto escuro.
21:24
Isso não existe, OK? É como se fosse um
21:26
azul escuro. Ok, perfeito. Salve aí.
21:29
Agora, depois disso, agora devemos
21:31
posicionar o nosso título. OK, um
21:33
pouquinho. Vai ser título
21:36
ponto pack. Vamos usar o pack. OK.
21:40
Fechar. Iremos aqui dentro e vamos dizer
21:43
o nosso pad y o pad será igual. Vamos
21:48
abrir e fechar parênteses. Não se
21:50
esquece 20 vgula
21:53
comida espaço c. OK. Salvei. Agora vamos
21:56
lá ver. Eh, vamos lá. Tem cá executar
22:00
isso para ver o que vai dar.
22:03
Se eu executar isso,
22:08
como podemos ver aqui, já temos o nosso
22:09
cronômetro, o nosso título. Agora, o
22:12
próximo que vamos criar será o nosso
22:15
display. O que é esse display? Então,
22:17
display praticamente é esse nosso número
22:18
que nós temos aqui, OK? Então, agora
22:21
esse display aqui, como é o valor que
22:23
será sempre alterado, OK? Então nós
22:28
vamos defini-lo aqui dentro do nosso
22:31
initor que será sempre alterado
22:34
consoante
22:36
o tempo. OK?
22:39
Ó, ou melhor dizer até não não vamos
22:41
defini-lo aqui, mas vamos definir mesmo
22:43
aqui mais, só que vamos usá-lo em forma
22:47
de self, que é para que nós possamos
22:49
tipo acessá-lo fora dessa desse senhor
22:52
aqui, desse e dessa fora desse método,
22:55
OK? Aqui não vamos chamar de função, OK?
22:57
Fora desse método, porque estamos a
22:58
tratar de classes. Então, quando é
23:00
classe chama-se método, OK? Mas
23:02
normalmente embora função, é a mesma
23:03
coisa. Então, isso vai ser o seguinte.
23:05
Então, para o nosso display nós teremos
23:07
o seguinte, veja?
23:08
Eh, como é algo um pouquinho parecido,
23:10
eu vou copiar tudo isto aqui. Eu amo
23:13
essa parte, OK? Deixerei um pouquinho e
23:16
vou apenas colar, tá? Isto aqui eu vou
23:18
recuá-los. É desse. OK, perfeito. Aqui
23:22
eu vou trocar de nome e vou passar de
23:28
display tempo, OK? É que ele vai
23:30
apresentar o nosso tempo, OK? display
23:33
tempo. Perfeito.
23:36
Então agora fora disso, OK? Eu virei
23:39
aqui, eu vou definir algumas variáveis
23:41
aqui dentro do nosso inicit, OK? Vamos
23:43
definir algumas variáveis que serão
23:45
sempre utilizadas, OK? São variáveis que
23:47
estarão e vão alterando o estado no
23:50
Então eu vou comentar aqui o seguinte,
23:52
OK? variáveis ou variáveis
23:57
ok de estado.
24:01
Então isso vai ser igual a self ponto
24:04
tempo
24:05
unde atual, ok?
24:09
Tempo atual.
24:11
Esse tempo atual ele vai ser igual a,
24:13
faço o seguinte, 1 2
24:16
2 ponto 1 2 2. 2 ponto 1 2.
24:22
Então perfeito. OK. Dessa forma aqui ele
24:24
está aqui. Então pois nosso tempo é
24:25
apresentar praticamente dessa forma
24:26
aqui. 0. Tudo começa no zero. Tá depois
24:30
isto também vamos definir mais um outro.
24:31
E aqui comentinho é tempo. Isso faltou o
24:34
P.
24:36
Agora vamos definir mais também um um
24:38
modo da variável que vai ser self ponto
24:42
segundo.
24:43
OK? Então o self segundo ele vai ser
24:46
igual a falso
24:48
que vai ser um valor buliano. E
24:52
também vamos definir o self
24:56
ponto rodando. Rodando. OK. Self ponto
25:00
rodando. Ele vai ser igual a false. Ah,
25:04
melhor dis. Vamos fazer uma correção,
25:05
uma pequena correção. Rodando será
25:07
falso, o segundo será zero, ok? Pois vai
25:10
ser um valor que vai ser alterado, mas
25:11
rodando é que vai, é como se fosse um
25:13
estado, tipo true first, true f, true f
25:16
está a rodar ou se não está rodando.
25:19
E também teremos o nosso self
25:22
ponto o ponto timer, ok? timer
25:27
ID
25:29
vai ser igual a non, tipo um valor
25:32
vazio. OK, perfeito.
25:35
Então agora após isto já definimos as
25:38
nossas variáveis do estado. Voltaremos
25:40
aqui no nosso display. Agora no nosso
25:42
display vamos fazer umas pequenas
25:43
alterações também, OK? Isso vai ser
25:46
display, OK? Vamos remover isso aqui.
25:50
Isso vai ser self.day.
25:55
Is o quê? Display. Ok. Self. Display.
25:58
Esse self. Display será igual a label
26:00
card, como sempre. E agora aqui no nosso
26:03
texto, ele vai terá que pegar aquele
26:06
valor que está lá que nós inicializamos
26:08
há pouquinho. Isso vai ser self. Isso
26:11
não é self. Self ponto. Ok. Tempo atual
26:16
self. tempo atual vírgula, ok? Que é o
26:19
nosso valor a fonta aqui vamos usar o
26:21
mesmo apoio, mesma coisa a real, mas só
26:24
que vamos aumentar um pouquinho també,
26:25
tá? 48, mas vai manter negritado. OK? A
26:29
fonta aqui vai ser wide. Agora aqui é
26:31
que vamos trocar um pouquinho o valor.
26:34
Aqui vai ser 4 a 9 0 e 2. Dessa forma
26:41
aqui, sabe? Bem, agora aqui no nosso
26:45
aqui vamos também alterar esse senhor.
26:47
Ele vai ser self
26:50
pdisplay.
26:52
Display ppack.
26:55
OK. Ele vai ser igual a, vamos remover
26:59
tudo isso aqui a apenas 15 direitamente.
27:03
15. Acho que aqui tá faz um parab.
27:10
Perfeitou
27:11
self comday com
27:15
pai e vai ser igual aí eu esqueci uma
27:19
coisa onde é que eu
27:23
pá faz mal vamos estar isto bom
27:28
eh aqui é iso aqui não é l é c ok vamos
27:33
mover isso
27:37
agoração
27:39
Tá, como sempre, vamos testar para ver
27:40
se funcionou mesmo ou não. Deixa paraar
27:44
de botar isto.
27:47
Hum, já temos aqui o nosso display, né?
27:51
Agora vamos adicionar esses senhoras
27:55
nossos botões, OK? Para que nós possamos
27:58
adicionar aos nossos botões, isto será o
28:02
mesma coisa. Damos aqui um pouquinho, dá
28:04
um pouquinho de espaço e vamos criar o
28:07
nosso botão. Agora, os nossos botões,
28:08
como eh teremos diversos botões aqui,
28:11
então vamos colocá-los,
28:14
OK? Praticamente dentro de um frame. OK?
28:17
Vamos pegar aqui um frame para tal. Vai
28:20
ser o seguinte. Como é frame, nós já
28:21
temos aqui alguns frames. Eu vou apenas
28:24
copiar isto aqui que eu gosto parte
28:28
e virei aqui. Eu vou colar. OK.
28:34
Vamosar isto. E agora aqui vamos chamar
28:37
de self.
28:39
OK. Self botão.
28:42
Self ou self
28:45
ponto
28:47
o?
28:50
Agora isto aqui vai eh será vamos chamar
28:52
de muito bem. Agora isso aqui vamos
28:54
chamar de frame
28:58
ok. F botões. Fotões. Ok.
29:03
Eh, mesma coisa aqui abaixo
29:06
que é isto. E vamos colar aqui
29:10
agora aqui. Isso aqui vai ser frame
29:12
botão, OK? Vamos chamar de frame
29:17
dos botões. Frame dos botões.
29:21
OK. Prêmio dos cupões. Então aqui nos
29:23
meus prêmios, nos meus prêmios desses
29:25
cupões, OK? Ele vai ser o Cing. OK.
29:29
Vamos, devemos alterar algumas coisas,
29:31
pois a não vai ser assim. Então ele vai
29:34
estar dentro do premio card, como sempre
29:37
estamos a trabalhar no frame card
29:43
e vamos remover todo tudo isto aqui. OK?
29:46
Não precisamos disto apenas assim é
29:49
suficiente. E o expand também não
29:51
necessitamos deleente
29:54
Deus.
29:55
apenas teremos o a do Y, ok? A do Y que
29:59
e será igual a 20, um pequeno espaço.
30:03
Esse espaço será praticamente da
30:06
Vamos criar os nossos botões. Para que
30:09
nós possamos criar os nossos botões em
30:11
será o seguinte, OK? Veja h meio que
30:16
posso copiar isto aqui, OK? Embora sei
30:18
que isso não é botão, mas não faz mal, é
30:19
só para ter um stack. copii aquilo, eu
30:22
colei aqui, vou recuar tudo isto. Recuei
30:28
então aqui esse primeiro primeiro botão
30:30
que nós vamos criar será o botão
30:31
iniciar.
30:33
Para o nosso botão inicial vai ser o
30:34
seguinte, vamos dar o nosso tempo, o
30:37
nosso o nosso comentário, botão iniciar
30:41
iniciar. Então aqui o meu botão iniciar.
30:44
A primeira coisa que vamos colocar é o
30:45
seguinte, vamos colocar o nome de aqui.
30:46
Vamos chamar de ttn eor
30:51
inicial
30:53
inicial.
30:55
Então o meu ser ponto botão, OK? Ponto.
30:58
Vou botar
31:00
aqui não é mais label vai ser button e
31:04
maiúscula 2 o vai ser igual a aqui
31:08
dentro ele estará dentro do nosso premio
31:11
botões.
31:13
Ele deve estar dentro do nosso premio
31:14
botões. Calculei aqui. Perfeito.
31:20
O texto ele vai ser chamado de iniciar,
31:23
ok? Iniciar. OK. Iniciar.
31:28
E após isto, vamos definir também a
31:31
fonte. A fonte vai ser mesmo a real, mas
31:34
aqui será 10, OK? E vai ser neglizado.
31:38
Agora já o BG G, o
31:41
botão, a cor do botão deve ser uma cor
31:44
verde.
31:46
Ele deve ser uma cor verde.
31:49
É, vocês podem usar qualquer cor. Eu vou
31:51
usar o 3 4 3 Como é próximo perto usar 3
31:55
4 3 4 a
31:59
aqui vai ser 8 3 4 a 86
32:05
83
32:07
perfeito.
32:10
Após isto vamos colocar de novo vírgula.
32:13
Ele vai eh terá o nosso FPG também ou FG
32:17
já definimos.
32:19
Eh,
32:22
então ele vai fazer, então esse
32:23
background é que vai ser é que será esta
32:25
cor aqui.
32:27
O background que será esta cor
32:31
deixa colar aqui agora o FG é que será a
32:35
cor branca da white.
32:39
OK. E depois ele também terá o pad X.
32:43
Pad será 20
32:46
pad Y.
32:48
O pad será igual a 8 vírgula. Ele vai
32:54
ter um estilo, o estilo relief. O relief
32:58
será raer
33:00
raer. Esse estilo aqui
33:04
vírgula.
33:06
E também vamos vai ter o band
33:10
será igual a 2 vgula
33:13
e o wi
33:17
tipo a a largura que vai ser igual a
33:22
salve.
33:24
Agora após isto vamos eh definir
33:29
isso vai ser agora self.
33:33
TTN iniciar. Vamos usar o sistema. OK.
33:37
Gre abrir, fechar. Ele estará no row
33:41
0
33:43
na coluna colum aqui igual a 0 vírgula.
33:48
E também vamos definir alguns pad.
33:52
Ora, já o padx será pad
33:57
eh será igual a 5.
34:00
Vamos rodar para ver o que que nós temos
34:01
aqui agora.
34:05
Então nós rodamos isso aqui. Vamos lá
34:07
rodar.
34:11
Um temos aqui o nosso primeiro botão e o
34:13
nosso botão iniciar.
34:16
Agora vamos adicionar os restantes botão
34:18
aqui. Pausar e reset. Como esses botões
34:21
são parecidos, vamos fazer a melhor
34:23
coisa e nós amamos. OK? Vamos apenar
34:28
copiar e depois colar. Eu virei aqui. Eu
34:31
vou copiar tudo isto aqui. OK. Vem aqui
34:35
abaixo. Dá um pouquinho de espaço e vou
34:38
colar.
34:39
Opa, pego isto aqui. Tem criar aqui um
34:42
pouquinho. Dev estar na mesma lenha.
34:44
Botão imitar. Aqui vai ser isso. Será
34:47
botão pausado. Botão pausar.
34:52
Aqui vamos também de novo para pausar em
34:54
vez de editar pausar.
34:58
Mesma coisa aqui também para não
35:00
esquecer que
35:02
pausar.
35:05
Então aqui no pausar vamos colocar
35:07
também aqui o texto dele será pausar.
35:11
Quase tudo será igual. O que vamos
35:13
trocar apenas é aqui a cor do fundo e
35:15
desse é uma cor vermelha que vai ser e a
35:20
ok 4
35:23
3
35:25
cor vermelha do resto vai se manter como
35:27
está e vamos trocar apenas aqui as
35:30
coordenadas ele aqui vai estar vai estar
35:33
na mesma linha mas na coluna diferente
35:35
ele vai ir avançar a coluna um nós
35:38
rodamos isso aqui
35:41
roda de novo.
35:45
E bom, não vamos fazer o mesmo para
35:48
outro botão, que é o botão resetado.
35:51
Agora para o nosso botão resetado a
35:53
mesma coisa. Já havíamos copiado, creio
35:56
eu.
35:58
Isso um pouquinho. Como já viamos
35:59
copiado
36:03
e recar um pouquinho.
36:06
Isto vai ser botão
36:08
in resetar, não é? Reset.
36:12
Resetar.
36:15
Agora após que nós nosso botão resetar,
36:17
vamos fazer frame.
36:20
Vai ser
36:22
e errei. Eu fiz meu Deus. Vetar
36:30
resetar a cor aqui do fundo.
36:33
Posso paraar o nome? Ok. Resetar.
36:38
Ok.
36:45
Tal aqui na coluna. Esse vai pra coluna
36:48
dois.
36:50
E vamos provar também aqui a cor ele vai
36:53
ser amarelo.
36:55
Ninado vai ser FB
36:59
B de novo Z 04. Só B.
37:07
Ok. Agora vamos rodar para ver o que
37:09
temos. Eu
37:11
rodar isto
37:15
e bom. Prontos, terminamos assim com a
37:18
nossa criação da nossa interface gráfica
37:20
do nosso projeto. OK. Bom, agora o que
37:23
nos falta agora é só nós criarmos a
37:25
lógica do nosso projeto, OK? que terá
37:28
para atualizar o tempo, iniciar o tempo,
37:30
pausar o tempo e por fim resetar o
37:33
tempo. Então a parte gráfica já
37:35
terminou, agora só nos falta a parte
37:37
lógica que vamos criar alguns métodos e
37:39
método é a mesma coisa informação
37:41
objetos método e vai nos ajudar nós
37:44
podemos executar o nosso projeto, OK?
37:47
para que nós podamos dar funcionalidade
37:49
nesses mesmos botões. Perfeito. Então,
37:52
assim que já temos os nossos métodos,
37:55
nosso primeiro método que é criar a
37:56
interface eh concluída, agora vamos
37:59
começar da lógica no nosso projeto, OK?
38:02
Então, vamos criar um novo método que é
38:05
praticamente uma nova função. Essa
38:07
função vai permitir com que nós possamos
38:09
iniciar o nosso cronômetro, OK? Mas
38:12
antes vamos criar primeiramente uma
38:13
função auxiliar ou menos é o método
38:15
auxiliar que vai permitir com que nós
38:16
possamos depois fazer uma conexão entre
38:20
essa mesma função, esse mesmo método,
38:21
com uma outra que nós iremos criar. Esse
38:23
método irá chamar-se de atualizar tempo,
38:27
OK? Atualizar dessa forma aqui,
38:29
atualizar
38:31
tempo.
38:33
Então esse def atualizar tempo, como eu
38:36
disse, é como se fosse uma função
38:37
auxiliar. Isso vai ser o seguinte, OK?
38:40
Então essa função vai nos permitir com
38:41
que nós possemos tipo atualizar o
38:43
display com o nosso tempo atual, OK?
38:46
Então para tal nós faremos o seguinte,
38:48
vamos fazer uma pequena configuração if
38:52
ponto rodando, OK? Rodando que escrevi
38:56
errado a palavra rodando dois pontos. Se
38:59
ele esver rodando, isso vai ser o
39:00
seguinte: self ponto segundo, OK? Então
39:04
essas variáveis segundo nós havíamos
39:05
definido lá acima, ok? Segundos, OK?
39:10
ponto vai ser mais 1. Vamos fazer tipo
39:13
uma pequena incrementação que vai ser
39:15
igual a mais 1. Esses segundos que nós
39:17
temos aqui, esse que nós temos aqui que
39:19
nós havíamos definido aqui acima de o
39:22
nosso segundo e coloquei em segundos e
39:25
coloca para plural segundos. OK. Tá.
39:28
Vamos aqui. Este self codante que nós
39:31
estamos a fazer é o que nós estamos a
39:32
verificar. Cerca. Portanto, nós veremos
39:35
aqui ele vai ser igual a + 1 vai
39:39
descemos
39:41
as nossas horas, OK? Então nós vamos ter
39:44
umas três variáveis aqui que será horas,
39:46
minutos e segundos. Ok? Postar o
39:48
cronômetro tem isso. Então esse hora,
39:50
minutos e segundos ele será igual a self
39:53
eh ponto
39:55
segundos, OK? C segundos
39:59
segundos. OK. Isto vai ser dividindo que
40:02
barra barra por 306
40:06
3.600 600. OK. Tem um mosquito voando na
40:09
minha cara que 3600, OK? Que
40:13
praticamente é que representa uma hora
40:16
que é 3600 segundos que representa
40:18
praticamente uma hora. Isso vai
40:19
descendo. E para minutos nós teremos o
40:22
seguinte que minutos
40:24
eh será igual a Vamos abrir e fechar.
40:27
Isso vai ser self pon segundos
40:32
segundos segundos. Ok. Segundos. OK.
40:36
percentagem de 3600.
40:40
OK? Deixar tudo isso dividindo por 600,
40:45
OK? Não é 600, desculpa, por 60. OK?
40:49
Salvamos. E também teremos agora para os
40:53
segundos, o próprio segundos mesmo, OK?
40:56
Isto vai ser segundos.
40:59
Eh, o segundos será igual a self
41:02
pon segundos. Terceir pon segundos.
41:06
percentagem, OK? Que é praticamente o
41:08
resto que estamos a de 60. Vamos agora,
41:12
uma vez já temos os nossos tempos
41:15
definidos, vamos fazer o seguinte agora,
41:17
self. Tempo atual, OK? Tempo atual ele
41:22
será igual a, vamos usar aqui uma F
41:24
string para que nós precisamos formatar
41:25
com ele. F string, vamos abrir e fechar,
41:28
OK? Vamos abrir e fechar as colchetes.
41:32
E vai ser o seguinte, OK? Nós vamos
41:34
passar primeiramente a horas, OK? Vai
41:37
ser dois pontos, vai meter 0 2D, OK?
41:41
Devemos formatar nesse formato aqui que
41:43
depois teremos dois pontos e vamos fazer
41:46
também a mesma coisa para minutos e os
41:49
segundos, OK? Então, para evitar
41:51
escrever tanto, eu posso simplesmente
41:53
copiar isto. Oh, oh, copiei coordenada.
41:57
Eu vou copiar tudo isto aqui. Vem para
41:59
cá,
42:00
dois pontos de novo e faço assim. Agora
42:03
aqui é onde temos temos horas, depois
42:06
vamos ter os minutos, OK? Isso aqui é o
42:09
nosso praticamente display, o minutos e
42:13
por fim vamos ter os nossos segundos.
42:15
OK? Segundos.
42:18
Perfeito.
42:19
Assim, praticamente estamos a formar o
42:21
nosso display. OK?
42:24
Agora tudo isso aqui, esse formato que
42:27
nós já temos aqui, devemos passá-lo para
42:30
o nosso display. Então, vai ser ponto
42:32
display, OK? Display
42:36
poncigos
42:38
dessa forma ponto confosar confio que é
42:41
uma forma mais abreviar ponto config.
42:44
OK, vamos abrir e fechar. Vamos passar
42:47
para texto dele. Vamos passar o self.
42:50
Tempo atual, ok? Po isso vai permitir
42:53
que nós possamos fazer a manipulação vai
42:56
ser self
42:58
ponto tempo atual. OK. Vamos
43:04
então agora após isto nós devemos chamar
43:08
de novo, tipo, novamente após, tipo, a
43:10
cada 1 segundo nós devemos chamar essa
43:13
mesma função. E aqui esqueci de colocar
43:16
ponto que ser ponto segundos. Então, a
43:18
cada um minuto nós devemos chamar essa
43:20
mesma função aqui, OK? Eh, para que ele
43:25
possa, tipo, atualizar os menos, os
43:27
segundos, tipo, vai fazer a contagem de
43:29
1 2 3. Onde temos aqui tipo essa
43:31
incrementação. Então, para tal é
43:33
simples. Deixa-me comentar só aqui. OK.
43:36
Chama
43:37
novamente, novamente
43:40
após 1 segundo. OK. após um segundo.
43:47
Isso será chamado novamente após um
43:48
segundo. Isso vai ser igual a self
43:51
ptimer,
43:53
OK? idosamos definido lá para cima vai
43:56
ser igual a self pjanela.
44:00
Ok ponto after. Então esse after aqui é
44:04
que vai permitir com que nós possamos
44:05
chamá-lo. OK. After 1000. Ok. Volt
44:11
1000 e n sequence. Ele vai chamar o
44:14
nosso self tempo atual, OK? Ou atualizar
44:18
o tempo que é essa coisa com ele. Isso
44:20
vai ser igual a self ponto atualizar
44:24
atualizar tempo. Vai chamar essa função
44:26
e ele vai fazendo a contagem. Perfeito.
44:29
Salvamos. Agora vamos sair dessa desse
44:32
método. Ok. Este praticamente é o método
44:35
principal. E agora vamos criar os
44:38
métodos auxiliar que serão o método de
44:40
iniciar, pausar e resetar. Pois do jeito
44:43
que está, se eu rodar isto aqui, veja,
44:46
ele está assim, né? Nada praticamente
44:48
está acontecendo ou vai acontecer. Se eu
44:50
clicar em botão, nada, se isso nada
44:51
mesmo. Isso também nada. Por que vamos
44:53
criar a primeira função é função para ou
44:56
melhor dizer, então se vai dizer função
44:57
é o método quê? É, é embora a mesma
45:00
coisa, mas só que em programação entada
45:01
objeto nós chamamos de método. Primeiro
45:04
método será igual a defusar.
45:08
A fechar isto vai ser
45:12
dois pontos e o nosso método método
45:15
pausado. Por que que eu estou começar
45:16
com pausado? Vamos começar com o método
45:18
iniciar. OK. Devemos iniciar, pausar e
45:20
resetar. Ok. Esse vai ser método
45:22
iniciar. Ele inicia ou continua o
45:26
cronômetro. OK. É para que possa iniciar
45:29
ou continuar o cronômetro. Isso
45:31
[limpando a garganta] vai ser o
45:31
seguinte. If not dessa forma aqui self
45:37
ponto rodando, ele vai controlar se não
45:39
está rodando, ok? Rodando
45:42
não está rodando dois pontos, ele fará o
45:44
seguinte, ok? Self ponto, ele só vai
45:47
apenas trocar de falso para verdadeiro,
45:50
ok? Certo ponto rodando, vai trocar o
45:52
valor para true porque inicialmente é
45:55
definido para falso. OK? E por exemplo,
45:57
ele vai chamar o self p a função
46:01
atualizar. tempo. Essa função aqui para
46:03
que essa essa função aqui é que permite
46:05
que o cronômetro inicie tipo os minutos,
46:09
os segundos vai contando essa função
46:11
atualizar para quem faz isso e aqui
46:12
iniciar só apenas para dar início na
46:14
contagem ok ponto atualizado. Tempo
46:17
salvei. E agora vamos fazer a conexão
46:19
desse deste método
46:22
juntamente com o nosso botão iniciar
46:25
tem. Ok? Isto vai ser algo bastante
46:27
simples, que é só vemos aqui depois do
46:29
frame. Posso fazer isso? Vamos passar
46:31
aqui o nosso comand
46:33
a forma será igual. Vamos passar nossa
46:36
função self ponto iniciar. Dessa forma
46:40
aqui o quê? Não coloca parênteses. Não
46:42
coloca parênteses aqui. Ele apenas fica
46:45
assim. E não se esqueça de colocar
46:46
vírgula porque senão vai obter um bom
46:49
erro. Perfeito. Assim terminamos com a
46:51
nossa função iniciar ou com o nosso
46:53
método iniciar. Se rodar isto, ele vai
46:57
aparecer. Se nós clicarmos no iniciar,
47:00
ver, ele vai contar, vai fazer a
47:02
contagem do tempo. Aqui onde temos esse
47:04
mais um, é que ele vai sempre
47:06
aprescentando e em cada 1 segundo temos
47:09
aqui o self.timid, ele vai chamando a
47:11
opção iniciar tempo. Agora nós queremos
47:13
pausar a função só clicar em iniciar
47:17
nada vai acontecer pois ele já tá
47:18
rodando. Agora queremos pausar e também
47:21
queremos resetar. Vamos agora criar os
47:23
métodos essencial para tal.
47:25
para esses dois métodos seguintes será,
47:28
OK? Método pausar
47:32
e isto vai ser o seguinte, OK?
47:36
Então, é praticamente quase a mesma
47:40
coisa, mas isto será o seguinte, deve
47:43
pausar,
47:45
OK? Deve pausar, vai abrir e fechar como
47:48
sempre nosso self
47:50
dois pontos. Ah, isso não é dois pontos,
47:52
dois pontos.
47:53
Paus assim ele pausa praticamente o
47:55
cronômetro. Isso vai ser if
47:59
rodando, mesma coisa sempre deve
48:01
controlar se está a rodar ou não. P self
48:03
rodando. Ele vai dizer o seguinte self
48:06
ponto rodando. OK. Ele vai apenas trocar
48:09
o estado de verdadeiro para falso, OK?
48:11
Fácil igual a falso.
48:14
Mas após nós trocarmos o estado, devemos
48:16
também fazer algumas configurações. If
48:21
ptimer
48:23
timer ID, OK? Dois pontos. Após dele
48:27
trogar para fal também deve fazer
48:29
algumas alguns resets. OK? Ele deve
48:31
fazer o seguinte:
48:34
ponela,
48:36
ok? é meio que vai chamar tipo a janela
48:39
e depois cancelar aquele que janela
48:43
ponto after
48:45
ok
48:47
cancel after cancel faz o seguinte vai
48:51
chamar o nosso self ptimer
48:56
ok timer id tá ele aqui ele vai chamar o
48:59
nosso timer id praticament agora assim
49:02
que ele chamar isto também vamos fazer o
49:04
seguinte ok vamos reiniciar o nosso self
49:07
ponter timer
49:09
ID devemos botá-lo para nome, OK? Para
49:13
zero praticamente para N.
49:18
Agora, uma vez já temos isso, vamos
49:20
agora conectá-lo com a nossa o nosso
49:23
botão. Onde que está o botão pausado? Tá
49:25
aqui. Depois disso, vem fazer command.
49:28
OK. Command será igual a pausa. Eh, se
49:34
colocares apenas pausar vai falhar. Deve
49:35
ser self ponto pausar. Após aqui coloca
49:40
a vibração day e vou rodar o meu
49:43
programa. OK. Cadê [limpando a garganta]
49:44
o meu programa?
49:46
Onde é que eu vou? Tá aqui o senhor
49:49
iniciei. Se eu cliquei em pausar,
49:51
pausou. Tá ver? Se eu clicar aqui, nada
49:54
vai acontecer mesmo aqui. Agora, se eu
49:55
clicar em iniciar de novo, ele vai dar
49:57
sequência. OK, já está. funcionar. Agora
50:00
falta o nosso botão resetar para que
50:01
possa resetar tudo isto para zero. Então
50:04
para resetar é praticamente simples
50:07
também. Faremos o seguinte,
50:11
isto vai ser igual a selon.
50:14
Isso não é certo, mas sim é def. Ok def.
50:17
Resetar resetar.
50:20
Ok. Ele vai se abrir parênteses. Vai ser
50:23
vem para cá dois pontos. Subar um
50:25
pouquinho e isto vai ser o seguinte,
50:30
[limpando a garganta] o nosso resultado
50:31
vai ser self ponto pausar, pois ele terá
50:34
que chamá-lo pausar,
50:37
ok? Depois dele chamar o pausar, ele vai
50:39
fazer o seguinte: Self, tipo, é
50:41
praticamente tudo que vai se fazer em
50:43
pausar e devemos fazer no resultado.
50:45
Primeiramente ele vai pausar o tempo,
50:47
depois vai reiniciar todos os valores.
50:48
Então isso vai ser C ponto.
50:51
É, vamos pegar os segundos.
50:53
Vamos pegar os segundos, OK? Os segundos
50:56
vai ser igual a, vamos reiniciá-lo. E
51:00
mesma coisa para o self ponto tempo
51:03
atual, OK? Tempo atual também será igual
51:06
a, vamos reiniciá-lo do jeito que está,
51:09
é 00
51:11
2.00.
51:14
Ok? E depois do tempo atual também vamos
51:17
o nosso self.
51:19
Display, ok?
51:22
config.
51:24
Ele vai se abrir. Vamos passar o nosso
51:27
texto,
51:29
OK? Texto vai ser igual a tempo
51:33
atual. Ele vai ser igual praticamente a
51:36
tempo atual para que ele possa fazer um
51:37
teste o valor. E depois disso vamos
51:40
apenas salvar. E bom, prontos. E isto tá
51:43
bem distante. OK. Sobe um pouquinho. Ok.
51:47
Ya, agora sim já temos a nossa função
51:49
resetar. Vamos agora conectar a função
51:51
resetar com o seu próprio botão. Vai ser
51:54
commandetar.
52:00
Colocar aqui a vírgula. Vale, vamos
52:02
resetar vai dar R. Self pon resetar para
52:04
que nós possamos acessar. OK. S.
52:06
Resetar. Salvei. E se eu rodar o meu
52:10
programa? E se eu acordar o meu
52:12
programa, tá aqui ele. Iniciei, tá
52:15
rodando, pausei,
52:18
eh, dei continuidade, pausei, resetei,
52:22
foi prazer, iniciei de novo. Ya, agora o
52:24
nosso programa já está funcional. Então,
52:27
assim de abrirmos o nosso projeto, como
52:28
eu sempre digo, tu podes implementar
52:30
novas funções ou podes, tipo melhorar,
52:32
quem sabe estilo, alguma coisinha ou que
52:34
mais? O mais importante é você praticar
52:35
a sua lógica de programação com este
52:37
mesmo projeto. Então eu sou João. Se tu
52:40
gostaste do projeto, já sabe, dá um like
52:41
e vejo no próximo vídeo, OK? Muito
52:44
obrigado que fui,
#Science

