<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p>Hi Asim</p>
<p>Before delving into any coding issues, I wonder whether this may simply be related to the layout page size and the map element shape, which is not the same proportions as your extent that you are aiming to set. If you are not requiring a specific map element size and this can be variable, then perhaps resize the element based upon your coordinates rather than the layout dimensions, as you are doing in the final line. To test if my thinking is sound, stop your code after the line map.setExtent(rectangle) and repaint the layout. If this works, then try resize the map element before setting the coordinates and try again. I suspect that it will be fine using approach 1 but one of your coordinate ranges i.e. X or Y will be amended due to, as I mentioned, the map shape not conforming to the coordinates shape.</p>
<p>I hope this helps.</p>
<div id="signature">---<br />
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Regards,<br /><br />Nigel Berjak<br />Please consider the environment before printing this email.</div>
</div>
<p><br /></p>
<p id="reply-intro">On 2024-11-08 22:33, Asim al-sofi via QGIS-User wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div id="replybody1">
<div dir="ltr">
<div dir="ltr">Hi all<br />
<div>Iam trying to make a print layout using a defined rectangle.</div>
<div>The print layout created using the rectangle is correct in the x coordinates but in the y coordinates it is always smaller than the defined rectangle.</div>
<div><strong>The code snippet is:</strong></div>
<div>
<div>layout = QgsPrintLayout(project)        </div>
<div>layoutName = "PrintLayout"</div>
<div>#initializes default settings for blank print layout canvas</div>
<div>layout.initializeDefaults()  </div>
<div>layout.setName(layoutName)</div>
<div>manager.addLayout(layout)</div>
<div>map = QgsLayoutItemMap(layout)</div>
<div>map.setRect(20, 20, 20, 20)                                     </div>
<div>#defines map extent using map coordinates</div>
<div>rectangle = QgsRectangle(float(bounds[0]),float(bounds[1]),float(bounds[2]),float(bounds[3]))# x min y min, x max y max</div>
<div>rectangle = QgsRectangle(QgsPointXY(float(bounds[0]),float(bounds[1])),QgsPointXY(float(bounds[2]),float(bounds[3])))# x min y min, x max y max</div>
<div>map.setExtent(rectangle)</div>
<div>layout.addLayoutItem(map)</div>
<div>#Move & Resize map on print layout canvas</div>
<div>map.attemptMove(QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters))</div>
<div>map.attemptResize(QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters))</div>
</div>
<div> </div>
<div>Any ideas what is wrong with my code?</div>
<div>Thanks in advance</div>
<div>Kind regards,</div>
<div>Asim</div>
</div>
</div>
</div>
<br />
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">_______________________________________________<br />QGIS-User mailing list<br /><a href="mailto:QGIS-User@lists.osgeo.org">QGIS-User@lists.osgeo.org</a><br />List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-user" target="_blank" rel="noopener noreferrer">https://lists.osgeo.org/mailman/listinfo/qgis-user</a><br />Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-user" target="_blank" rel="noopener noreferrer">https://lists.osgeo.org/mailman/listinfo/qgis-user</a></div>
</blockquote>
</body></html>