Quero criar uma barra de ferramentas com 2 botões, cada botão abrindo um formulário diferente.
Os passos que segui são:
Criou um plugin usando o construtor Plugin
Criou uma barra de ferramentas com 2 botões, fazendo as modificações necessárias no arquivo de implementação.
Até aqui, tudo funciona bem; portanto, quando o primeiro botão é clicado, o formulário correspondente é aberto corretamente. Este formulário é o criado pelo construtor Plugin.
Quero ter um segundo formulário que será aberto quando o segundo botão for clicado. Assim:
Criou um novo formulário no designer Qt (form2.ui),
Traduziu o arquivo da interface do usuário para o arquivo py (make) e importou a classe do arquivo py traduzido no arquivo de implementação, obteve uma instância da classe (self.dlg2 = Ui_form2 ())
e no método run () do arquivo de implementação que escrevi:
def run2(self):
self.dlg2.show()
result = self.dlg2.exec_()
Mas, em seguida, recebo uma mensagem de erro informando que esse novo formulário não possui o método .show (). Ele deve herdar algo para implementar o método .show ()? Mas como posso modificar o código do segundo formulário para herdar algo, pois todas as alterações no arquivo py traduzido do arquivo da interface do usuário não podem ser salvas?
fonte
initGui()
, desta maneira:self.add_action( icon_path, text=self.tr(u'plugin3'), callback=self.run3, parent=self.iface.mainWindow())
1 . Use o construtor Plugin para criar um novo plugin
Os arquivos criados são mostrados na figura a seguir
2 . Converta o arquivo de recursos ( resources.qrc ) em arquivo Python ( resources.py ) usando o OSGeo4W Shell
Depois disso, se você olhar dentro da pasta do plug-in , notará um novo arquivo .py , o arquivo resources.py que acabou de ser criado. O plug-in agora pode ser instalado e aberto através do menu principal do QGIS> Gerenciar e instalar plug-ins.
3 . COMO CRIAR A BARRA DE FERRAMENTAS E AS FERRAMENTAS (botões) E ADICIONAR AS FERRAMENTAS NA BARRA DE FERRAMENTAS
Abra com um editor o arquivo my_toolbar.py e, na seção do initGui (self), escreva:
Dessa forma, três botões / ferramentas foram criados.
Para que os botões apareçam na barra de ferramentas, continue escrevendo o seguinte:
Para que os botões sejam clicados para abrir uma GUI, continue escrevendo o seguinte:
Os métodos runtool1 , runtool2 e runtool3 são definidos posteriormente como a seguir para abrir uma interface gráfica diferente para cada botão
Dessa forma, quando o botão da ferramenta1 é clicado, o gui dlgtool1 será aberto, quando o botão da ferramenta2 for clicado, o dlgtool2 será aberto e quando o botão da ferramenta3 for clicado, o gui do dlgtool3 será aberto.
dlgtool1 , dlgtool2 e dlgtool3 devem ser variáveis apontando para os arquivos da interface do usuário que representam os diálogos .
Portanto, os diálogos devem ser:
criado ,
importados para o arquivo py principal ( my_toolbar.py ) e
atribuído a variáveis ( dlgtool1 , dlgtool2 e dlgtool3 ) para obter uma instância delas.
Para criar os diálogos :
Abra Form_dlgtool1_dialog.py com um editor para aplicar as seguintes modificações:
De :
Mude para :
Siga o mesmo procedimento para os outros dois arquivos ( Form_dlgtool2_dialog.py e Form_dlgtool3_dialog.py )
Em seguida, para importar as caixas de diálogo para o arquivo principal, abra o arquivo my_toolbar.py com o editor e importe o seguinte
Por fim, para obter uma instância deles , escreva o seguinte na seção def __init __ (self, iface) :
Agora, você pode abrir os arquivos da interface do usuário no QtDesigner e personalizá-los. Em seguida, recarregue a barra de ferramentas do plugin dentro do QGIS para obter o seguinte resultado
fonte