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)