[Qgis-developer] python application
Denis Rouzaud
denis.rouzaud at gmail.com
Fri Jun 7 00:21:55 PDT 2013
Hi,
On 06/07/2013 08:34 AM, JBE wrote:
> Hello,
>
> I'm trying to create a pygis-application with a code found in the "quantum
> gis coding and application guide". I've programmed before but I'm new to
> python as such, so right now I'm basically just trying to break this down
> and understand how it works.
>
> To the issue: I'm using the code below but I get the "invalid syntax" error
> on the line of:
> self.connect(self.actionAddLayer, SIGNAL("activated()"), self.addLayer)
> where "..actionAddLayer" is marked.
try
self.actionAddLayer.activated.connect(self.addLayer)
>
> What is wrong here?
>
> cheers
>
>
> ------------------------------------------------------
> from PyQt4.QtCore import *
> from PyQt4.QtGui import *
> from qgis.core import *
> from qgis.gui import *
> import sys
> import os
> # Import our GUI
> from mainwindow_ui import Ui_MainWindow
>
> # Environment variable QGISHOME must be set to the 1.0 install directory
> # before running this application
> qgis_prefix = os.getenv("C:\Program Files\Quantum GIS Lisboa")
>
> class MainWindow(QMainWindow, Ui_MainWindow):
>
> def __init__(self):
>
> QMainWindow.__init__(self)
>
> # Required by Qt4 to initialize the UI
> self.setupUi(self)
>
> # Set the title for the app
> self.setWindowTitle("QGIS Demo App")
>
> # Create the map canvas
> self.canvas = QgsMapCanvas()
> # Set the background color to light blue something
> self.canvas.setCanvasColor(QColor(200,200,255))
> self.canvas.enableAntiAliasing(True)
> self.canvas.useQImageToRender(False)
> self.canvas.show()
>
> # Lay our widgets out in the main window using a
> # vertical box layout
> self.layout = QVBoxLayout(self.frame)
> self.layout.addWidget(self.canvas)
>
> # Create the actions for our tools and connect each to the
> appropriate
> # method
> self.actionAddLayer = QAction(QIcon("(qgis_prefix + \
> "/share/qgis/themes/classic/mActionAddLayer.png"), "Add Layer",
> self.frame)
>
> self.connect(self.actionAddLayer, SIGNAL("activated()"),
> self.addLayer)
> self.actionZoomIn = QAction(QIcon("(qgis_prefix + \
> "/share/qgis/themes/classic/mActionZoomIn.png"), \
> "Zoom In", self.frame)
>
> self.connect(self.actionZoomIn, SIGNAL("activated()"), self.zoomIn)
> self.actionZoomOut = QAction(QIcon("(qgis_prefix + \
> "/share/qgis/themes/classic/mActionZoomOut.png"), \
> "Zoom Out", self.frame)
> self.connect(self.actionZoomOut, SIGNAL("activated()"),
> self.zoomOut)
> self.actionPan = QAction(QIcon("(qgis_prefix +
> \"/share/qgis/themes/classic/mActionPan.png"), \
> "Pan", self.frame)
>
> self.connect(self.actionPan, SIGNAL("activated()"), self.pan)
> self.actionZoomFull = QAction(QIcon("(qgis_prefix + \
> "/share/qgis/themes/classic/mActionZoomFullExtent.png"), \
> "Zoom Full Extent", self.frame)
>
> self.connect(self.actionZoomFull, SIGNAL("activated()"),
> self.zoomFull)
>
> # Create a toolbar
> self.toolbar = self.addToolBar("Map")
> # Add the actions to the toolbar
> self.toolbar.addAction(self.actionAddLayer)
> self.toolbar.addAction(self.actionZoomIn)
> self.toolbar.addAction(self.actionZoomOut);
> self.toolbar.addAction(self.actionPan);
> self.toolbar.addAction(self.actionZoomFull);
>
> # Create the map tools
> self.toolPan = QgsMapToolPan(self.canvas)
> self.toolZoomIn = QgsMapToolZoom(self.canvas, False) # false = in
> self.toolZoomOut = QgsMapToolZoom(self.canvas, True) # true = out
>
> # Set the map tool to zoom in
> def zoomIn(self):
> self.canvas.setMapTool(self.toolZoomIn)
>
> # Set the map tool to zoom out
> def zoomOut(self):
> self.canvas.setMapTool(self.toolZoomOut)
>
> # Set the map tool to
> def pan(self):
> self.canvas.setMapTool(self.toolPan)
>
> # Zoom to full extent of layer
> def zoomFull(self):
> self.canvas.zoomFullExtent()
>
> # Add an OGR layer to the map
> def addLayer(self):
> file = QFileDialog.getOpenFileName(self, "Open Shapefile", ".",
> "Shapefiles
> (*.shp)")
> fileInfo = QFileInfo(file)
>
> # Add the layer
> layer = QgsVectorLayer(file, fileInfo.fileName(), "ogr")
>
> if not layer.isValid():
> return
>
> # Change the color of the layer to gray
> symbols = layer.renderer().symbols()
> symbol = symbols[0]
> symbol.setFillColor(QColor.fromRgb(192,192,192))
>
> # Add layer to the registry
> QgsMapLayerRegistry.instance().addMapLayer(layer);
>
> # Set extent to the extent of our layer
> self.canvas.setExtent(layer.extent())
>
> # Set up the map canvas layer set
> cl = QgsMapCanvasLayer(layer)
> layers = [cl]
> self.canvas.setLayerSet(layers)
>
> def main(argv):
> # create Qt application
> app = QApplication(argv)
>
> # Initialize qgis libraries
> QgsApplication.setPrefixPath(qgis_prefix, True)
> QgsApplication.initQgis()
>
> # create main window
> wnd = MainWindow()
> # Move the app window to upper left
> wnd.move(100,100)
> wnd.show()
>
> # run!
> retval = app.exec_()
>
> # exit
> QgsApplication.exitQgis()
> sys.exit(retval)
>
> if __name__ == "__main__":
> main(sys.argv)
>
>
>
>
>
>
>
>
>
>
>
>
> --
> View this message in context: http://osgeo-org.1560.x6.nabble.com/python-application-tp5058598.html
> Sent from the Quantum GIS - Developer mailing list archive at Nabble.com.
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
More information about the Qgis-developer
mailing list