Pergunta

Eu tenho uma caixa de AboutDialog feita em clareira, mas o botão Fechar não funciona. Eu não sei como conectar este botão para uma função separada, uma vez que fica em um widget chamado dialog-action_area.

Outro problema é se eu usar o botão de fechar criado pelo gerenciador de janelas, eu não posso abri-lo novamente, porque foi destruída.

Como posso mudar isso para que ele apenas esconde?

Foi útil?

Solução

Você precisa chamar o método do widget hide () quando você recebe de exclusão ou cancelar sinais:

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
  self.wTree.get_widget("aboutdialog1").hide()

Você pode encontrar o tipo de resposta constantes em a documentação GTK

Outras dicas

Como qualquer outra janela de diálogo, eles exigem que você

  1. Faça uso do método de execução.
  2. Faça uso do sinal "reponse"

O primeiro irá bloquear o loop principal e irá retornar assim que o diálogo recebe uma resposta, este pode ser, clique em qualquer botão na área de ação ou pressionar Esc, ou chamar o método resposta do diálogo ou "destruir" a janela , o último não significa que a janela wil ser destruído, isso significa que o método run () vai sair e retornar uma resposta. assim:

response = dialog.run()

Se você usar um depurador, você vai notar que as principais estadias de loop lá até que você clique em um botão ou tentar fechar o diálogo. Depois de ter recebido resposta yout, então você pode useit como quiser.

response = dialog.run()
if response == gtk.RESPONSE_OK:
    #do something here if the user hit the OK button 
dialog.destroy()

O segundo permite que você use a caixa de diálogo em um material não-bloqueio, então você tem que ligar o seu diálogo com o sinal de "resposta".

def do_response(dialog, response):
    if response == gtk.RESPONSE_OK:
        #do something here if the user hit the OK button 
    dialog.destroy()

dialog.connect('response', do_response)

Agora, você percebe que você tem que destruir o seu diálogo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top