[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