Eu escrevi um aplicativo Python / QT que baixa arquivos. Como eu posso parar de ficar "grisalho" depois de alguns segundos?

1

Aqui está a essência . O aplicativo ainda está em execução e a barra de progresso ainda se moverá, mas a janela ficará cinza e se eu clicar no X para fechá-lo, um pop-up aparecerá e informará "A janela X não está respondendo, Force Quit?" Se forçar o encerramento, a janela fecha, mas vejo que o aplicativo ainda está em execução quando eu o executo no terminal. Estou usando o QT 4.

    
por Ian H 15.08.2012 / 02:58

2 respostas

1

O problema é que, enquanto as funções de download estão em execução, o aplicativo não pode responder a eventos - o controle não retorna ao loop principal.

Eu acho que o mecanismo mais simples é fazer os downloads em threads separados e usar o mecanismo de sinais e slots do Qt para atualizar as barras de progresso (os threads não podem interagir diretamente com a interface do usuário).

Além disso, em vez de abrir arquivos para gravar a resposta HTTP, talvez seja mais eficiente usar uma função como urllib.urlretrieve para escrever os arquivos diretamente.

    
por Thomas K 19.08.2012 / 19:51
0

Parece que a janela não está sendo destruída. Esta é a janela principal do seu aplicativo ou uma caixa de diálogo de algum tipo?

Se for uma caixa de diálogo, certifique-se de que após chamar o objeto da janela, a próxima linha ou após o valor de retorno da janela ser capturado, chame "window_object.destroy ()".

Se for a sua janela principal, você talvez queira modificar o método de retorno de chamada para o botão X com algo para destruir sua janela, talvez self.destroy ()?

    
por Jobi Carter 16.08.2012 / 23:48