﻿{"id":16387,"date":"2026-06-11T12:00:00","date_gmt":"2026-06-11T10:00:00","guid":{"rendered":"https:\/\/www.sigterritoires.fr\/?p=16387"},"modified":"2026-06-11T11:35:34","modified_gmt":"2026-06-11T09:35:34","slug":"desenvolver-plugin-qgis-adicionar-botao-janela","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/","title":{"rendered":"[PT]Desenvolver um Plugin QGIS: Adicionar um Bot\u00e3o e uma Janela"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionar um bot\u00e3o \u00e0 interface do QGIS costuma ser o primeiro passo concreto no desenvolvimento de um plugin. \u00c9 isso que transforma um simples script em Python em uma ferramenta realmente utiliz\u00e1vel pelo usu\u00e1rio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste terceiro artigo do tutorial, veremos como adicionar um bot\u00e3o e exibir uma janela em um plugin QGIS, com base no c\u00f3digo gerado pelo Plugin Builder. Vamos dedicar um tempo para compreender os elementos essenciais: o m\u00e9todo <code>initGui()<\/code>, as a\u00e7\u00f5es (<code>QAction<\/code>) e o acionamento do di\u00e1logo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este tutorial \u00e9 voltado para iniciantes no desenvolvimento de plugins QGIS que desejam entender como interagir com a interface do QGIS antes de avan\u00e7ar para a l\u00f3gica de neg\u00f3cio.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenu <\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Adicionar_um_botao_e_exibir_uma_janela_no_QGIS\" >Adicionar um bot\u00e3o e exibir uma janela no QGIS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Lembrete_o_plugin_gerado_pelo_Plugin_Builder\" >Lembrete: o plugin gerado pelo Plugin Builder<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#O_arquivo_principal_do_plugin\" >O arquivo principal do plugin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#O_metodo_initGui_ponto_de_entrada_visual\" >O m\u00e9todo initGui(): ponto de entrada visual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#O_metodo_run_quando_o_botao_e_clicado\" >O m\u00e9todo run(): quando o bot\u00e3o \u00e9 clicado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#%F0%9F%93%A6_O_que_um_botao_faz_de_verdade_no_QGIS\" >&#x1f4e6; O que um bot\u00e3o faz de verdade no QGIS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Entendendo_a_janela_dialogo\" >Entendendo a janela (di\u00e1logo)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Modificar_o_texto_da_janela\" >Modificar o texto da janela<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Testar_e_recarregar_o_plugin\" >Testar e recarregar o plugin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#Erros_frequentes_nesta_etapa\" >Erros frequentes nesta etapa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#O_que_voce_aprendeu\" >O que voc\u00ea aprendeu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/desenvolver-plugin-qgis-adicionar-botao-janela\/#E_no_proximo_artigo\" >E no pr\u00f3ximo artigo?<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Adicionar_um_botao_e_exibir_uma_janela_no_QGIS\"><\/span>Adicionar um bot\u00e3o e exibir uma janela no QGIS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nos dois primeiros artigos, estabelecemos as bases: entender o que \u00e9 um plugin QGIS e criar um plugin vazio usando o Plugin Builder. Agora \u00e9 hora de dar um comportamento vis\u00edvel ao nosso plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste artigo, vamos aprender a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>adicionar um bot\u00e3o \u00e0 interface do QGIS,<\/li>\n\n\n\n<li>compreender o c\u00f3digo gerado pelo Plugin Builder,<\/li>\n\n\n\n<li>exibir uma janela (di\u00e1logo) simples.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O objetivo ainda n\u00e3o \u00e9 fazer algo complexo, mas entender o mecanismo fundamental de qualquer plugin QGIS.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Lembrete_o_plugin_gerado_pelo_Plugin_Builder\"><\/span>Lembrete: o plugin gerado pelo Plugin Builder<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando escolhemos o template <strong>Tool button with dialog<\/strong>, o Plugin Builder j\u00e1 preparou muita coisa para n\u00f3s:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>um bot\u00e3o na barra de ferramentas,<\/li>\n\n\n\n<li>um item de menu no QGIS,<\/li>\n\n\n\n<li>uma janela gr\u00e1fica associada.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Mesmo que tudo isso j\u00e1 funcione, \u00e9 essencial entender como esses elementos est\u00e3o conectados.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_arquivo_principal_do_plugin\"><\/span>O arquivo principal do plugin<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Abra o arquivo Python principal do seu plugin (por exemplo <code>mon_premier_plugin.py<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea encontrar\u00e1 uma classe principal com o nome do plugin. \u00c9 ela que controla todo o comportamento.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class MonPremierPlugin:\n    def __init__(self, iface):\n        self.iface = iface\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&#x1f449; <code>iface<\/code> \u00e9 o objeto que permite ao plugin dialogar com o QGIS (menus, camadas, mensagens\u2026).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_metodo_initGui_ponto_de_entrada_visual\"><\/span>O m\u00e9todo <code>initGui()<\/code>: ponto de entrada visual<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O m\u00e9todo <code>initGui()<\/code> \u00e9 chamado automaticamente quando o plugin \u00e9 ativado no QGIS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 aqui que s\u00e3o definidos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>o bot\u00e3o na barra de ferramentas,<\/li>\n\n\n\n<li>a entrada no menu,<\/li>\n\n\n\n<li>a a\u00e7\u00e3o associada.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo t\u00edpico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def initGui(self):\n    self.action = QAction(\n        QIcon(':\/plugins\/MonPremierPlugin\/icon.png'),\n        'Meu primeiro plugin',\n        self.iface.mainWindow()\n    )\n    self.action.triggered.connect(self.run)\n    self.iface.addToolBarIcon(self.action)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mesmo sem entender cada linha em detalhe, guarde o essencial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uma a\u00e7\u00e3o \u00e9 criada,<\/li>\n\n\n\n<li>ela \u00e9 conectada a um m\u00e9todo (<code>run<\/code>),<\/li>\n\n\n\n<li>ela \u00e9 adicionada \u00e0 interface do QGIS.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_metodo_run_quando_o_botao_e_clicado\"><\/span>O m\u00e9todo <code>run()<\/code>: quando o bot\u00e3o \u00e9 clicado<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O m\u00e9todo <code>run()<\/code> \u00e9 chamado quando o usu\u00e1rio clica no bot\u00e3o do plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No template gerado, ele serve principalmente para exibir uma janela.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def run(self):\n    self.dlg.show()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&#x1f449; Neste est\u00e1gio, o plugin faz apenas uma coisa: abrir um di\u00e1logo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%F0%9F%93%A6_O_que_um_botao_faz_de_verdade_no_QGIS\"><\/span>&#x1f4e6; O que um bot\u00e3o faz de verdade no QGIS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando clicamos em um bot\u00e3o no QGIS, nada \u201cm\u00e1gico\u201d acontece.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um bot\u00e3o de plugin \u00e9 simplesmente um gatilho: ele chama uma fun\u00e7\u00e3o Python espec\u00edfica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Concretamente, o funcionamento \u00e9 sempre o mesmo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>o plugin cria uma a\u00e7\u00e3o (<code>QAction<\/code>),<\/li>\n\n\n\n<li>essa a\u00e7\u00e3o \u00e9 associada a uma fun\u00e7\u00e3o (por exemplo <code>run()<\/code>),<\/li>\n\n\n\n<li>quando o usu\u00e1rio clica no bot\u00e3o, o QGIS executa essa fun\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">No nosso caso, a fun\u00e7\u00e3o <code>run()<\/code> apenas exibe uma janela. Mais adiante, essa mesma fun\u00e7\u00e3o poder\u00e1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ler par\u00e2metros informados pelo usu\u00e1rio,<\/li>\n\n\n\n<li>analisar camadas,<\/li>\n\n\n\n<li>executar processamentos,<\/li>\n\n\n\n<li>produzir resultados.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">&#x1f449; Um bot\u00e3o no QGIS faz apenas uma coisa: executar c\u00f3digo Python.<br>Todo o poder do plugin est\u00e1 nesse c\u00f3digo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Entendendo_a_janela_dialogo\"><\/span>Entendendo a janela (di\u00e1logo)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A janela exibida \u00e9 definida em um arquivo <code>.ui<\/code>, criado com o Qt Designer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse arquivo \u00e9 ent\u00e3o carregado em Python, permitindo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>exibir a janela,<\/li>\n\n\n\n<li>recuperar valores informados pelo usu\u00e1rio,<\/li>\n\n\n\n<li>conectar bot\u00f5es a c\u00f3digo.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Por enquanto, vamos apenas modificar o conte\u00fado visual.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modificar_o_texto_da_janela\"><\/span>Modificar o texto da janela<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Abra o arquivo <code>.ui<\/code> no Qt Designer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Experimente, por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mudar o t\u00edtulo da janela,<\/li>\n\n\n\n<li>alterar um r\u00f3tulo (label),<\/li>\n\n\n\n<li>adicionar um bot\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Salve o arquivo, recarregue o plugin no QGIS e clique no bot\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#x1f449; Voc\u00ea acabou de modificar a interface de um plugin QGIS sem escrever c\u00f3digo Python.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Testar_e_recarregar_o_plugin\"><\/span>Testar e recarregar o plugin<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A cada modifica\u00e7\u00e3o no c\u00f3digo ou na interface:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>desative o plugin no gerenciador de extens\u00f5es,<\/li>\n\n\n\n<li>reative-o,<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">ou utilize a op\u00e7\u00e3o <strong>Recarregar plugin<\/strong>, se tiver instalado a extens\u00e3o apropriada.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Erros_frequentes_nesta_etapa\"><\/span>Erros frequentes nesta etapa<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nada acontece ao clicar \u2192 m\u00e9todo <code>run()<\/code> n\u00e3o conectado,<\/li>\n\n\n\n<li>erro ao carregar \u2192 diferen\u00e7a de mai\u00fasculas\/min\u00fasculas nos nomes,<\/li>\n\n\n\n<li>janela vazia \u2192 arquivo <code>.ui<\/code> mal referenciado.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esses problemas s\u00e3o normais e fazem parte do aprendizado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_que_voce_aprendeu\"><\/span>O que voc\u00ea aprendeu<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ao final deste artigo, voc\u00ea sabe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>onde o bot\u00e3o de um plugin QGIS \u00e9 criado,<\/li>\n\n\n\n<li>como uma a\u00e7\u00e3o \u00e9 conectada a c\u00f3digo,<\/li>\n\n\n\n<li>como exibir e modificar uma janela.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Agora voc\u00ea possui o elemento essencial de qualquer plugin QGIS interativo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"E_no_proximo_artigo\"><\/span>E no pr\u00f3ximo artigo?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No pr\u00f3ximo artigo, veremos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>como recuperar valores digitados na janela,<\/li>\n\n\n\n<li>como interagir com camadas do QGIS,<\/li>\n\n\n\n<li>como estruturar o c\u00f3digo para ir mais longe.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">&#x1f449; A partir daqui, seu plugin come\u00e7a a se tornar realmente \u00fatil.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Adicionar um bot\u00e3o \u00e0 interface do QGIS costuma ser o primeiro passo concreto no desenvolvimento de um plugin. \u00c9 isso que transforma um simples script em Python em uma ferramenta realmente utiliz\u00e1vel pelo usu\u00e1rio. Neste terceiro&hellip;<\/p>\n","protected":false},"author":1,"featured_media":16327,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3418,2134],"tags":[4214,4216,4652,4101,4218],"class_list":["post-16387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pluigin-pt","category-qgis","tag-botao-plugin-qgis","tag-janela-plugin-qgis","tag-plugin-builder-qgis-pt","tag-plugin-qgis-python","tag-pyqgis-tutorial"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2026\/01\/pluginsQGIS3.jpg?fit=409%2C307&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-4gj","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=16387"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media\/16327"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=16387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=16387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=16387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}