-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
90 lines (74 loc) · 3.04 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Hashzap
# Botão de iniciar chat
# Popup para entrar no chat
# Quando entrar no chat: (aparece para todo mundo)
# a mensagem que você entrou no chat
# o campo e o botão de enviar mensagem
# A cada mensagem que você envia (aparece para todo mundo)
# Nome: Texto da mensagem
import flet as ft # para instalar: pip install flet
def main(pagina):
texto = ft.Text('Hashzap', size= 25,color= ft.colors.PINK_900, weight=ft.FontWeight.W_900)
chat = ft.Column()
nome_usuario = ft.TextField(label='Digite seu nome...')
def enviar_mensagem_tunel(mensagem):
tipo = mensagem['tipo']
if tipo == 'mensagem':
texto_mensagem = mensagem['texto']
usuario_mensagem = mensagem['usuario']
# Adicionar a mensagem no chat
chat.controls.append(ft.Text(f'{usuario_mensagem}: {texto_mensagem}'))
else:
usuario_mensagem = mensagem['usuario']
# Aparece o usuário que entrou no chat sem ter digitado a mensagem
chat.controls.append(ft.Text(f'{usuario_mensagem} entrou no chat!',
size= 12,
italic= True,
color= ft.colors.BLUE_300,
weight= ft.FontWeight.W_700))
pagina.update()
# PUBSUB (PUBLISH SUBSCRIBE)
pagina.pubsub.subscribe(enviar_mensagem_tunel)
def enviar_mensagem(e):
# Enviar uma mensagem
pagina.pubsub.send_all({'texto': campo_mensagem.value,
'usuario': nome_usuario.value,
'tipo': 'mensagem'})
# Limpar o campo de mensagem
campo_mensagem.value = ''
pagina.update()
campo_mensagem = ft.TextField(label='Digite sua mensagem...', on_submit= enviar_mensagem)
botao_enviar_mensagem = ft.ElevatedButton('Enviar', on_click= enviar_mensagem)
def entrar_popup(e):
pagina.pubsub.send_all({'usuario': nome_usuario.value,
'tipo': 'entrada'})
# Adicionar o chat
pagina.add(chat)
# Fechar o popup
popup.open = False
# Remover o botão "Iniciar chat"
pagina.remove(botao_iniciar)
#Remover o texto "Hashzap"
pagina.remove(texto)
# Criar o campo de mensagem do usuário
# Criar o botão de enviar mensagem do usuário
pagina.add(ft.Row([
campo_mensagem,
botao_enviar_mensagem
]))
pagina.update()
popup = ft.AlertDialog(
open= False,
modal= True,
title= ft.Text('Bem vindo ao Hashzap'),
content= nome_usuario,
actions= [ft.ElevatedButton('Entrar', on_click=entrar_popup)]
)
def entrar_chat(e):
pagina.dialog = popup
popup.open = True
pagina.update()
botao_iniciar = ft.ElevatedButton('Iniciar chat', on_click=entrar_chat)
pagina.add(texto)
pagina.add(botao_iniciar)
ft.app(target=main, view=ft.WEB_BROWSER, port=777)