@@ -31,32 +31,32 @@ def __init__(self):
31
31
# Botões da barra de navegação
32
32
back_btn = QAction ("⬅️ Voltar" , self )
33
33
back_btn .setStatusTip ("Voltar para a página anterior" )
34
- back_btn .triggered .connect (lambda : self .current_browser ().back ()) # Conecta a uma lambda para chamar no clique
34
+ back_btn .triggered .connect (lambda : self .current_browser ().back ())
35
35
self .toolbar .addAction (back_btn )
36
36
37
37
forward_btn = QAction ("➡️ Avançar" , self )
38
38
forward_btn .setStatusTip ("Avançar para a próxima página" )
39
- forward_btn .triggered .connect (lambda : self .current_browser ().forward ()) # Conecta a uma lambda
39
+ forward_btn .triggered .connect (lambda : self .current_browser ().forward ())
40
40
self .toolbar .addAction (forward_btn )
41
41
42
42
reload_btn = QAction ("🔄 Recarregar" , self )
43
43
reload_btn .setStatusTip ("Recarregar a página atual" )
44
- reload_btn .triggered .connect (lambda : self .current_browser ().reload ()) # Conecta a uma lambda
44
+ reload_btn .triggered .connect (lambda : self .current_browser ().reload ())
45
45
self .toolbar .addAction (reload_btn )
46
46
47
47
home_btn = QAction ("🏠 Início" , self )
48
48
home_btn .setStatusTip ("Ir para a página inicial" )
49
- home_btn .triggered .connect (self .navigate_home ) # Essa já estava OK
49
+ home_btn .triggered .connect (self .navigate_home )
50
50
self .toolbar .addAction (home_btn )
51
51
52
52
self .url_bar = QLineEdit ()
53
53
self .url_bar .returnPressed .connect (self .navigate_to_url )
54
54
self .toolbar .addWidget (self .url_bar )
55
55
56
- # Botão para adicionar nova guia
56
+ # Botão para adicionar nova guia - AGORA USANDO LAMBDA PARA GARANTIR NENHUM ARGUMENTO
57
57
new_tab_btn = QAction ("➕ Nova Guia" , self )
58
58
new_tab_btn .setStatusTip ("Abrir uma nova guia" )
59
- new_tab_btn .triggered .connect (self .add_new_tab )
59
+ new_tab_btn .triggered .connect (lambda : self .add_new_tab ()) # <--- AQUI ESTÁ A MUDANÇA PRINCIPAL
60
60
self .toolbar .addAction (new_tab_btn )
61
61
62
62
@@ -70,18 +70,19 @@ def __init__(self):
70
70
71
71
def current_browser (self ):
72
72
"""Retorna a instância do navegador da guia atual."""
73
- # Garante que sempre haja um widget antes de tentar acessá-lo
74
73
if self .tabs .count () > 0 :
75
74
return self .tabs .currentWidget ()
76
- return None # Retorna None se não houver abas (embora sempre teremos uma)
75
+ return None
77
76
78
77
def add_new_tab (self , qurl = None , label = "Nova Guia" ):
79
78
"""Adiciona uma nova guia ao navegador."""
80
- if qurl is None :
79
+ # Se qurl é None, ele significa que a chamada veio sem argumento (e deve usar o padrão)
80
+ # Se vier um bool (True/False), isso é um sinal indesejado, então redefinimos para o padrão
81
+ if qurl is None or isinstance (qurl , bool ):
81
82
qurl = QUrl ("https://www.google.com" ) # Padrão para nova aba
82
83
83
84
browser = BrowserTab ()
84
- browser .setUrl (qurl )
85
+ browser .setUrl (qurl ) # Agora qurl será sempre um QUrl
85
86
86
87
i = self .tabs .addTab (browser , label )
87
88
self .tabs .setCurrentIndex (i )
@@ -98,15 +99,15 @@ def add_new_tab(self, qurl=None, label="Nova Guia"):
98
99
def tab_open_doubleclick (self , index ):
99
100
"""Abre uma nova guia ao dar clique duplo na barra de abas."""
100
101
if index == - 1 : # Clicou em uma área vazia
101
- self .add_new_tab ()
102
+ self .add_new_tab () # Chama sem argumentos explícitos
102
103
103
104
def current_tab_changed (self , index ):
104
105
"""Atualiza a barra de URL quando a guia ativa muda."""
105
106
browser = self .current_browser ()
106
107
if browser :
107
108
qurl = browser .url ()
108
109
self .update_urlbar (qurl , browser )
109
- self .update_buttons_state () # Garante que os botões refletem a guia atual
110
+ self .update_buttons_state ()
110
111
111
112
def navigate_home (self ):
112
113
"""Volta para a página inicial."""
@@ -121,60 +122,52 @@ def navigate_to_url(self):
121
122
"""
122
123
url = self .url_bar .text ()
123
124
browser = self .current_browser ()
124
- if not browser : # Se não houver navegador ativo, não faz nada
125
+ if not browser :
125
126
return
126
127
127
- # 1. Adiciona https:// se não houver protocolo
128
128
if not url .startswith ("http://" ) and not url .startswith ("https://" ):
129
- # Verifica se parece um domínio (contém pelo menos um ponto)
130
- if "." in url and not " " in url : # Garante que não é uma frase com espaços
131
- url = "https://" + url # Tenta HTTPS por padrão
129
+ if "." in url and not " " in url :
130
+ url = "https://" + url
132
131
else :
133
- # 2. Se não parecer uma URL, faz uma pesquisa no Google
134
132
search_query = QUrl .toPercentEncoding (url )
135
133
url = f"https://www.google.com/search?q={ search_query } "
136
134
137
135
browser .setUrl (QUrl (url ))
138
- self .update_buttons_state () # Atualiza o estado dos botões após a navegação
136
+ self .update_buttons_state ()
139
137
140
138
def update_urlbar (self , q , browser = None ):
141
139
"""Atualiza a barra de URL com a URL da guia atual."""
142
- # Apenas atualiza se o navegador passado for o navegador atual ou se não houver um navegador específico
143
140
if browser is None or browser == self .current_browser ():
144
141
self .url_bar .setText (q .toString ())
145
- self .url_bar .setCursorPosition (0 ) # Volta o cursor para o início
142
+ self .url_bar .setCursorPosition (0 )
146
143
147
144
def update_buttons_state (self ):
148
145
"""Atualiza o estado (habilitado/desabilitado) dos botões de navegação."""
149
146
browser = self .current_browser ()
150
147
if browser :
151
- # Acessa o histórico para verificar se pode voltar/avançar
152
148
history = browser .history ()
153
149
can_go_back = history .canGoBack ()
154
150
can_go_forward = history .canGoForward ()
155
151
else :
156
- # Se não houver navegador, desabilita tudo
157
152
can_go_back = False
158
153
can_go_forward = False
159
154
160
155
for action in self .toolbar .actions ():
161
156
if action .text () == "⬅️ Voltar" :
162
- # Habilita "Voltar" se houver um navegador, puder voltar e não estiver na página inicial
163
157
action .setEnabled (browser is not None and can_go_back and browser .url () != QUrl ("https://www.google.com" ))
164
158
elif action .text () == "➡️ Avançar" :
165
159
action .setEnabled (browser is not None and can_go_forward )
166
160
elif action .text () == "🔄 Recarregar" :
167
- action .setEnabled (browser is not None ) # Recarregar sempre que houver um navegador
161
+ action .setEnabled (browser is not None )
168
162
elif action .text () == "🏠 Início" :
169
- action .setEnabled (browser is not None ) # Home sempre que houver um navegador
163
+ action .setEnabled (browser is not None )
170
164
elif action .text () == "➕ Nova Guia" :
171
- action .setEnabled (True ) # Nova guia sempre habilitada
165
+ action .setEnabled (True )
172
166
173
167
174
- # Função principal para rodar o aplicativo
175
168
if __name__ == "__main__" :
176
169
app = QApplication (sys .argv )
177
- QApplication .setApplicationName ("Navegador Py-Tech" ) # Define o nome da aplicação para o sistema
170
+ QApplication .setApplicationName ("Navegador Py-Tech" )
178
171
navegador = MiniNavegador ()
179
172
navegador .show ()
180
173
sys .exit (app .exec_ ())
0 commit comments