[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