[Qgis-developer] python application

JBE johan.bengtsson at lusem.se
Thu Jun 6 23:34:48 PDT 2013


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.

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.


More information about the Qgis-developer mailing list