dificuldade para fechar forms no pyqt

264 views
Skip to first unread message

Marcelo Augusto

unread,
Feb 9, 2017, 6:03:31 PM2/9/17
to Python Brasil
Saudações aos colegas.

Apesar de ter evoluído bastante no pyqt ainda estou com dificuldade para entender com fechar os forms de uma aplicação.

para fechar a aplicação uso sys.exit(app_exec()), para chamar outro form dentro da aplicação uso: Form.exec(), 

o problema é que quando fecho o form que chamei anteriormente acabo fechando a aplicação toda.
 
uso self.close();

estou apanhando um pouco com isso, o core da aplicação em python já ta beleza.

acho que preciso entender melhor o QApplication e o pacote sys

se alguém puder me ajudar agradeço.

se tiver algum link com exemplos agradeço

Amigos não sou preguiçoso, pesquiso bastante antes de postar.

obrigado a todos


 




Marcelo Augusto

unread,
Feb 13, 2017, 6:49:07 PM2/13/17
to Python Brasil
fiz assim mas achei que ficou muito tosco.

## aqui o metodo carraga uma classe com os dados da empresa
def Ativando(self):
   
self.LoginEmp2 = LoginEmp() # criando a istancia da classe
    self.LoginEmp2.CodEmpresa = '123131' # atribuindo os valores
    self.LoginEmp2.Cnpj = "46.534.616/0001-43333"
    return self.LoginEmp2   ## aqui retorna a classe para o form princimal qmainwindow

 
self.BtnAtiva=botao("Ativar") # botao que vai sair do form de ativacao
self.connect(self.BtnAtiva, SIGNAL('clicked()'),lambda: self.Ativando(self.close())) # o evento click recebe a função
# e o metodo close, fechando o form e voltando para janela principal


funciona mas, gera erro no console dizendo que tem um argumento a mais.

por favor alguém poderia me ajudar?


Michell Stuttgart Faria

unread,
Feb 14, 2017, 4:55:09 AM2/14/17
to python...@googlegroups.com
Marcelo, até onde entendi, ao utilizar self.close() você realmente irá fechar a janela anterior, uma vez que você esta utilizando o self, que referencia a classe da janela que chama as suas outras janelas. Você deveria utilizar o Form.close().

Quando abro outras janelas de dialogo em minhas aplicações, eu faço assim:

@QtCore.pyqtSlot()
def on_action_about_triggered(self):
ab_dlg = AboutDialog()
ab_dlg.show()
ab_dlg.exec_()
No exemplo acima, eu  criei um método para chamar a janela de dialogo "About" da minha aplicação. 

Você não precisa dar close nessa janela, quando o usuário a fechar o programa irá continuar normalmente.

Eu dei uma olhada no código que você postou e não entendi essa parte:

lambda: self.Ativando(self.close()) 

Se você deseja conectar o bBtnAtiva com o método "Ativando" acredito que deveria ser feito assim:

self.BtnAtiva.clicked.connect(self.Ativando)


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Michell Stuttgart Faria  
Visite meu Github e meu Blog.
Engenheiro da Computação e Desenvolvedor Python
Universidade Federal de Itajubá - UNIFEI

Marcelo Augusto

unread,
Feb 15, 2017, 4:19:51 PM2/15/17
to Python Brasil
Obrigado pela ajuda, Michell.
vou tentar fazer como voce demonstrou.

abraços

marcelo


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages