Jag fick en fråga där man försökte få ett antal Python kommandon att köras automatiskt i QGIS, men inte fick det att fungera. I det här fallet handlade det om att skapa en toolbar med utvalda knappar.
Koden för att göra detta i Python konsolen (Ctrl + Alt + P):
Samma kod borde även fungera om man skriver den i projektinställningarna eller i startup.py, men det gör den inte.
Genom att lägga till en ”meddelanderad” i koden så kan man kontrollera om koden över huvud taget körs.
Innan det går att köra koden utanför konsolen så måste även bibliotek importeras. Vill du ta bort ditt befintliga verktygsfält så kan du göra det med toolbar.deleteLater().
När projektet öppnas igen så visas som förväntat meddelandet, men inget verktygsfält har lagts till. Verktygsfältet finns antagligen, men bara i openProject() funktionen (typ).
För att verktygsfältet skall slå igenom i gränssnittet så behöver objektet ”toolbar” definieras globalt.
Detta lägger till verktygsfältet och skriver ett meddelande till skärmen varje gång projektet öppnas. Ett problem är att om QGIS inte helt avslutas emellan, så kommer ett nytt verktygsfält med samma namn läggas till varje gång projektet öppnas på nytt, även om man har haft ett annat projekt öppet emellan.
Därför så bör verktygsfältet tas bort när projektet stängs ner:
from qgis.utils import iface
def openProject():
global toolbar
toolbar = iface.addToolBar("Mina Verktyg")
toolbar.addAction( iface.actionAbout())
toolbar.addAction( iface.actionIdentify())
iface.messageBar().pushMessage("Meddelanderubrik", "Skriptet har körts!")
def saveProject():
pass
def closeProject():
toolbar.deleteLater()
Ovan visas därför grunden till den här typen av kod som skapar och lägger till ett anpassat verktygsfält i ett specifikt QGIS projekt, och som bara finns just där.
Vill du att verktygen alltid skall finnas i QGIS så kan koden i stället köras i startup.py.
Koden skrivs i en textfil som döps till ”startup.py” och sparas i QGIS startkatalog. På Linux är det .local/share/QGIS/QGIS3 medan det på Windows är AppData\Roaming\QGIS\QGIS3. På Mac är det Library/Application Support/QGIS/QGIS3.
Med koden här så kommer den alltid att köras varje gång QGIS startar och därmed blir verktygsfältet tillgängligt för alla projekt.
Har man många installationer och uppdaterar skriptet så kanske man inte vill behöva ersätta startup.py på alla klienter. Då kan man i stället sätta en miljövariabel på klienterna som pekar på en sökväg till en skriptfil som körs vid uppstart.
Miljövariabeln är PYQGIS_STARTUP och värdet är en url som pekar på skriptfilen. Det här alternativet kan kräva ytterligare en del handpåläggning för att fungera eftersom skriptet hämtas utanför QGIS miljön, men det går att läsa lite mer om detta här. Jag har själv inte testat just detta, så du får prova dig fram.