To capture the current screen extents, including a world file, use this command in PyQGIS:
qgis.utils.iface.mapCanvas().saveAsImage(fileName)
where 'fileName' is que path and fileName you want. It will be a .PNG file
Then, you can use some more code to get this fileName from a Open File Window, as below.
from PyQt4.QtGui import QFileDialog projP = QgsProject.instance().readPath("./") fileN =QFileDialog.getSaveFileName(None, "Save Image as:",projP,"Image Files (*.png)") print 'file=',fileN if fileN!='': qgis.utils.iface.mapCanvas().saveAsImage(fileN)