No snapshot abaixo, tenho a janela principal com o corpo da agenda. Ao selecionar um paciente, em seguida no botão situação, uma nova janela surge, com opções para alterar a situação do atendimento.
http://img441.imageshack.us/img441/1459/snapshotj.png
Uploaded with ImageShack.us
Quando a segunda janela se abre o foco se volta para ela, enquanto a janela principal fica indisponível, até o fechamento da filha.
self.frame_situacao = wx.Frame(self, -1, title="Situação", size=(230, 400), style=wx.STAY_ON_TOP) #Constroi a janela situação
self.frame_situacao.Show(True) # Mostra a janela
self.frame_situacao.MakeModal(True) # O loop de eventos continua trabalhando, com o foco na nova janela secundária, enquanto a primária fica indisponível.
Tive que utilizar esse artifício para permitir apenas uma instância da nova janela. Sem ele, caso o usuário clicasse mais de uma vez sobre o botão "Situação", abria mais de uma instância.O problema é o seguinte, como permitir apenas uma instância de uma janela sem o recurso de torná-la modal? Gostaria que o usuário pudesse interagir com a janela principal, tendo apenas uma instância de outra janela aberta.
Espero ter sido claro.