<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Python Papers]]></title><description><![CDATA[Learning and Developing in Python]]></description><link>https://www.pythonpapers.com</link><image><url>https://substackcdn.com/image/fetch/$s_!hYhe!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e3c79a3-b014-495b-8ecb-094e0086d5f6_1280x1280.png</url><title>The Python Papers</title><link>https://www.pythonpapers.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 26 Oct 2026 12:42:15 GMT</lastBuildDate><atom:link href="https://www.pythonpapers.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mike Driscoll]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pypapers@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pypapers@substack.com]]></itunes:email><itunes:name><![CDATA[Mike Driscoll]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mike Driscoll]]></itunes:author><googleplay:owner><![CDATA[pypapers@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pypapers@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mike Driscoll]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Python 101 - How to Create an Installer for Windows]]></title><description><![CDATA[Windows users have certain expectations when it comes to installing software.]]></description><link>https://www.pythonpapers.com/p/python-101-how-to-create-an-installer</link><guid isPermaLink="false">https://www.pythonpapers.com/p/python-101-how-to-create-an-installer</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 21 Oct 2026 19:31:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oaa-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Windows users have certain expectations when it comes to installing software. They typically think the software should be downloadable and installable via a wizard-type interface. These wizards are created using &#8220;installer software&#8221;. While there aren&#8217;t really any Python packages available for creating installers, there are some nice free applications that you can use.</p><p>Two of the most popular are:</p><ul><li><p>NSIS - <a href="https://nsis.sourceforge.io/Main_Page">https://nsis.sourceforge.io/Main_Page</a></p></li><li><p>Inno Setup - <a href="http://www.jrsoftware.org/isinfo.php">http://www.jrsoftware.org/isinfo.php</a></p></li></ul><p>For this chapter, you will be using Inno Setup. You will also be learning about the following topics:</p><ul><li><p>Installing Inno Setup</p></li><li><p>Creating an Installer</p></li><li><p>Testing Your Installer</p></li></ul><p>Let&#8217;s get started by learning to install the installer!</p><h2><strong>Installing Inno Setup</strong></h2><p>Installing Inno Setup is pretty simple. You will need to go to the following URL:</p><ul><li><p><a href="http://www.jrsoftware.org/isinfo.php">http://www.jrsoftware.org/isinfo.php</a></p></li></ul><p>Then go to the <strong>Download Inno Setup</strong> link and choose where you want to download the application from. After downloading Inno Setup, double-click the installer to install it on your system.</p><p>Now that you have Inno Setup installed on your Windows machine, you can create your own installer!</p><h2><strong>Creating an Installer</strong></h2><p>The first step in creating an installer is to choose what you want to install. For this example, you will use the image viewer executable that you created in the previous chapter.</p><p>Inno Setup makes creating an installer really straightforward. It uses a wizard that walks you through it step by step. To get started, run Inno Setup and you should see a screen that looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oaa-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oaa-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 424w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 848w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oaa-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png" width="1456" height="743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75456,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oaa-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 424w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 848w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!oaa-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb115c96c-55d4-4be7-8cf1-070c2a0a4b42_2050x1046.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>While Inno Setup defaults to opening an existing file, what you want to do is choose the second option from the top: &#8220;Create a new script file using the Script Wizard&#8221;. Then press <strong>OK</strong>.</p><p>You should now see the first page of the Inno Setup Script Wizard:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IyJx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IyJx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 424w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 848w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 1272w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IyJx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png" width="1044" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1044,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54388,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IyJx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 424w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 848w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 1272w, https://substackcdn.com/image/fetch/$s_!IyJx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c2b2e8-1519-45f4-9ae0-b9248161c701_1044x788.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Go ahead and hit <strong>Next</strong> here. You will now be on the <strong>Application Information</strong> page:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yTcc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yTcc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 424w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 848w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 1272w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yTcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png" width="1048" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be836f25-38a9-4125-b915-1215f695346e_1048x778.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35887,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yTcc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 424w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 848w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 1272w, https://substackcdn.com/image/fetch/$s_!yTcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe836f25-38a9-4125-b915-1215f695346e_1048x778.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is where you enter your application&#8217;s name, its version information, the publisher&#8217;s name and the application&#8217;s website. You can fill it out to match the screenshot or customize it to your specifications.</p><p>Once you are finished, press <strong>Next</strong> and you should see the following:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dWfq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dWfq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 424w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 848w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 1272w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dWfq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png" width="1048" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35895,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dWfq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 424w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 848w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 1272w, https://substackcdn.com/image/fetch/$s_!dWfq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551834a-e622-400f-ba6e-60b5fe398cfa_1048x776.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This page of the wizard lets you set the application&#8217;s installation directory. On Windows, most applications install to <strong>Program Files</strong>, which is also the default here. This is also where you set the folder name for your application. This is the name of the folder that will appear in Program Files. Alternatively, you can check the box at the bottom that indicates that your application doesn&#8217;t need a folder at all.</p><p>You can edit this page if you don&#8217;t like the defaults. Otherwise, press <strong>Next</strong> to continue:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ogtU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ogtU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 424w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 848w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 1272w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ogtU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png" width="1056" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41574,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ogtU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 424w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 848w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 1272w, https://substackcdn.com/image/fetch/$s_!ogtU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c3e4fd3-c1b4-46e4-b7e0-c4463c985902_1056x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is where you will choose the main executable file. In this case, you want to choose the executable you created with PyInstaller. If you didn&#8217;t create the executable using the <code>--onefile</code> flag, then you can add the other files using the <strong>Add file(s)...</strong> button. If your application requires any other special files, like a SQLite database file or images, this is also where you would add them.</p><p><strong>Note:</strong> Remember on Windows 10, if you used <code>--onefile</code>, then you also need to sign the file or it will be marked as malware by Windows Defender.</p><p>By default, this page will allow the user to run your application when the installer finishes. Many installers do this, so it&#8217;s expected by most users.</p><p>When you are done, click <strong>Next</strong> to go to the Shortcuts page:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHEC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHEC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 424w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 848w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 1272w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHEC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png" width="1048" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47773,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CHEC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 424w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 848w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 1272w, https://substackcdn.com/image/fetch/$s_!CHEC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca36f99-e572-45bd-ba21-c3f9eb6d7b1c_1048x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the <strong>Application Shortcuts</strong> page and it allows you to manage what shortcuts are created for your application and where they should go. The options are pretty self-explanatory. You can usually use the defaults, but you are welcome to change them however you see fit.</p><p>Once you are finished configuring the shortcuts, press <strong>Next</strong> to continue:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ob5m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ob5m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 424w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 848w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 1272w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ob5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png" width="1056" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be906290-1f45-44e5-b339-f43829109a88_1056x792.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35316,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ob5m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 424w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 848w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 1272w, https://substackcdn.com/image/fetch/$s_!ob5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe906290-1f45-44e5-b339-f43829109a88_1056x792.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The <strong>Documentation Page</strong> of the wizard is where you can add your application&#8217;s license file. For example, if you were putting out an open source application, you can add the GPL or MIT or whatever license file you need there. If this were a commercial application, you would add your&nbsp;<strong>End-User License Agreement (EULA)</strong>&nbsp;file here. You can also add some extra information before and after the installation here too!</p><p>All these files are optional. If you don&#8217;t want to apply a license or add before-and-after instructions, you can just click <strong>Next</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lkop!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lkop!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 424w, https://substackcdn.com/image/fetch/$s_!lkop!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 848w, https://substackcdn.com/image/fetch/$s_!lkop!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 1272w, https://substackcdn.com/image/fetch/$s_!lkop!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lkop!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png" width="1052" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37135,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lkop!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 424w, https://substackcdn.com/image/fetch/$s_!lkop!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 848w, https://substackcdn.com/image/fetch/$s_!lkop!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 1272w, https://substackcdn.com/image/fetch/$s_!lkop!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef14e9-afa5-42fd-8378-36ff5ac5b7e9_1052x784.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This page specifies which install mode to use when installing your application. The default is to install for all users, which is probably what you want. The other options are pretty self-explanatory. You can play around with them or read more about them in Inno Setup's documentation. Once you're done with this page, go on to the next one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HrSF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HrSF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 424w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 848w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 1272w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HrSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png" width="1044" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1044,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37985,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HrSF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 424w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 848w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 1272w, https://substackcdn.com/image/fetch/$s_!HrSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a81bfc7-ee68-4ee1-8de9-d35163bf0c8a_1044x778.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here you can set up which languages should be included in your installer. The default is <strong>English</strong>, but Inno Setup supports many others. Feel free to modify this as needed before continuing on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gFt6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gFt6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 424w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 848w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 1272w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gFt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png" width="1038" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1038,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33357,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gFt6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 424w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 848w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 1272w, https://substackcdn.com/image/fetch/$s_!gFt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b507421-6540-4714-8cce-a80a277fdba5_1038x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The <strong>Compiler Settings</strong> page lets you name the output setup file, which defaults to simply <strong>setup</strong>. You can set the output folder here, add a custom setup file icon and even add password protection to the setup file. I usually just leave the defaults alone, but this is an opportunity to add some branding to the setup if you have a nice icon file handy.</p><p>The next page is for the preprocessor:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5UIM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5UIM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 424w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 848w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 1272w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5UIM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png" width="1052" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37873,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5UIM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 424w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 848w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 1272w, https://substackcdn.com/image/fetch/$s_!5UIM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd524cd44-b451-4646-9f5d-5791e6b2d434_1052x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The preprocessor is primarily for catching typos in the Inno Setup script file. It basically adds some helpful options at compile time to your Inno Setup script.</p><p>Check out the following URL for full details:</p><ul><li><p><a href="http://www.jrsoftware.org/ispphelp/">http://www.jrsoftware.org/ispphelp/</a></p></li></ul><p>When you press <strong>Next</strong> you will reach the final page of the wizard:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N9JL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N9JL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 424w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 848w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 1272w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N9JL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png" width="1052" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N9JL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 424w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 848w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 1272w, https://substackcdn.com/image/fetch/$s_!N9JL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3800061-0f8b-4350-91de-5a6a0ba9aa2e_1052x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There's nothing to do here but press <strong>Finish</strong>, <strong>Back</strong> or <strong>Cancel</strong>. Go ahead and complete the wizard by pressing <strong>Finish</strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wO1l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wO1l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 424w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 848w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 1272w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wO1l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9286f33a-0629-4326-af6e-918142d80b47_1640x858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114677,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wO1l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 424w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 848w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 1272w, https://substackcdn.com/image/fetch/$s_!wO1l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9286f33a-0629-4326-af6e-918142d80b47_1640x858.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Inno Setup now asks you if you would like to compile the script. This means that Inno Setup has created a build script for your installer and would like your permission to run that script to actually create your installer executable. Press <strong>Yes</strong> to continue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2NyC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2NyC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 424w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 848w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 1272w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2NyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png" width="942" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10cdd627-866d-463d-9e08-967e481f5877_942x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21283,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/195054166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2NyC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 424w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 848w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 1272w, https://substackcdn.com/image/fetch/$s_!2NyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cdd627-866d-463d-9e08-967e481f5877_942x398.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This dialog asks if you would like to save the Inno Setup compiler script before running it. That is certainly a good idea as you don&#8217;t want to lose any of your changes. Press <strong>Yes</strong> to save it and then choose what to name the script and where to save it.</p><p>Once the script is saved, it will create your installer. At this point you should have an installer created! You can edit the script file in any text editor, although the Inno Setup editor is probably best as it has its own syntax highlighting built-in to it.</p><h2><strong>Testing Your Installer</strong></h2><p>Now that you have an installer, it&#8217;s a good idea to test it. When you finish building the installer with Inno Setup, it will automatically run the installer for you. You can choose to install your application now and verify that it launches correctly.</p><p>You may see an error when you attempt to run your application. That usually means that you forgot to include some file or other in your installer. Occasionally you will get errors that are related to permission issues. You can solve the first issue by comparing what files were installed to the ones in your <code>dist</code> folder that you created with PyInstaller. If there are any missing, you can run Inno Setup and go through the wizard again or you can modify the script file yourself directly.</p><p>Permission issues are more difficult and will take some trial and error to figure out. You will likely need to research what exactly the problem is to figure out how to solve it.</p><p>Of course, occasionally there&#8217;s something wrong with the executable itself. Then you&#8217;ll have to debug it before you can repackage it into an installer.</p><h2><strong>Wrapping Up</strong></h2><p>Creating an installer for your Windows users is a good idea. Having an installer gives the users confidence in your program. Installers add that extra bit of polish and they make it easier to make sure all the files you need are installed with your application.</p><p>In this chapter, you learned about:</p><ul><li><p>Installing Inno Setup</p></li><li><p>Creating an Installer</p></li><li><p>Testing Your Installer</p></li></ul><p>You should spend some time reading the Inno Setup documentation and then trying it out on some of your own creations. You will quickly find that Inno Setup is intuitive and you&#8217;ll soon have some installers of your own.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.pythonpapers.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Python Papers is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Textual - Using Grids to Layout Your Widgets]]></title><description><![CDATA[Last week, you learned how to use Textual containers to arrange your widgets. This week, you will focus on using a grid, which works well for certain layouts that can be harder or more confusing to build by nesting containers.]]></description><link>https://www.pythonpapers.com/p/textual-using-grids-to-layout-your</link><guid isPermaLink="false">https://www.pythonpapers.com/p/textual-using-grids-to-layout-your</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 14 Oct 2026 13:54:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!F41R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, you learned how to use <a href="https://www.pythonpapers.com/p/textual-using-containers-for-layouts">Textual containers to arrange your widgets</a>. This week, you will focus on using a grid, which works well for certain layouts that can be harder or more confusing to build by nesting containers.</p><p>The grid layout doesn&#8217;t even use containers. You control the layout completely with CSS. To create complex layouts, individual widgets can span multiple rows, columns, or both.</p><p>Here is a drawing that demonstrates some of what you could do with a grid layout:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F41R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F41R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 424w, https://substackcdn.com/image/fetch/$s_!F41R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 848w, https://substackcdn.com/image/fetch/$s_!F41R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 1272w, https://substackcdn.com/image/fetch/$s_!F41R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F41R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png" width="900" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21066,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!F41R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 424w, https://substackcdn.com/image/fetch/$s_!F41R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 848w, https://substackcdn.com/image/fetch/$s_!F41R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 1272w, https://substackcdn.com/image/fetch/$s_!F41R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3df4d324-5758-45d1-8f2e-8a099e0834a9_900x648.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Textual grid layouts should NOT be confused with CSS Grids. Those are from the web development world and have little in common with what you will be doing with Textual.</p><p>When you want to grid layout in Textual, you will define the number of rows and columns that your grid needs to have using the <code>grid-size</code> CSS property. You will also need to set the <code>layout: grid</code> to apply the grid layout. At that point, widgets get added to the grid&#8217;s cells from left to right and then top to bottom.</p><p>You will start by creating a layout <strong>without</strong> CSS to demonstrate again what happens when you do not have a layout defined. Open up your Python editor and create a new file with the following code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!40XB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!40XB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 424w, https://substackcdn.com/image/fetch/$s_!40XB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 848w, https://substackcdn.com/image/fetch/$s_!40XB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!40XB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!40XB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png" width="1180" height="1108" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1108,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133119,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!40XB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 424w, https://substackcdn.com/image/fetch/$s_!40XB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 848w, https://substackcdn.com/image/fetch/$s_!40XB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!40XB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F545a102d-16ec-4dc8-857f-8ccc018bf1f1_1180x1108.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This code creates an application with four buttons, but they use Textual's default layout strategy. When you run this code, you will see this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xIGz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xIGz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xIGz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:278409,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xIGz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!xIGz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0abc1ad-8498-4fbe-862d-1f36c3a4f48d_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s obviously <strong>not</strong> a grid! You will need to rewrite the code to use a CSS grid layout instead.</p><p>First, create some CSS. Create a new file called <code>grid.tcss</code> and add the following:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aSE2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aSE2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 424w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 848w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aSE2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png" width="1180" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55956,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aSE2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 424w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 848w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aSE2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d83953-80aa-4c93-97ae-77940ff6614f_1180x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The CSS above will create a 2x3 grid with two columns and three rows. You will also set the height and width of the buttons so that they fill the &#8220;cells&#8221;.</p><p>Your grid has six cells, but you do not need to fill all of them. For this example, you will fill the first four cells. Open up your Python editor and create a <code>grid.py</code> file. Then enter the following code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R68I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R68I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!R68I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!R68I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!R68I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R68I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png" width="1180" height="1150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1150,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138818,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R68I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!R68I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!R68I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!R68I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bdde0d-2baa-4efa-945e-3ff99fac92e7_1180x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Your code will fill in the first four cells in your grid. The first two buttons go in the first row. Once that row is full, Textual will add the following widgets to the next row.</p><p>When you run this code, you will see something similar to this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kdPb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kdPb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kdPb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298684,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kdPb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!kdPb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2328e32-7e17-401c-9c4e-ecff28c2192a_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What will happen if you add a fifth button? Try it out and see! You should get something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0P3f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0P3f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0P3f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:322947,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0P3f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!0P3f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d4438-a7e6-4898-9e21-22945c68675b_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, you&#8217;re ready to learn how to adjust the sizes of your columns and rows!</p><h3><strong>Modifying Row and Column Sizes</strong></h3><p>You can make rows and columns have different relative widths or heights. This is a great way to make one row or column larger than another. Again, you do this in the CSS file.</p><p>You can adjust the rows and columns using the following parameters:</p><ul><li><p>grid-columns</p></li><li><p>grid-rows</p></li></ul><p>In your CSS file, you have a 2-column by 3-row grid. Create a new CSS file named <code>row_adjust.css</code> and add the following code to it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FQz4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FQz4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 424w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 848w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 1272w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FQz4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png" width="1180" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FQz4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 424w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 848w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 1272w, https://substackcdn.com/image/fetch/$s_!FQz4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d0d0ee-642b-4dab-a631-803d853fc396_1180x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Everything here is the same except for the third parameter to <code>Screen,</code> which defines the <code>grid-rows</code>. Here, you set the first row to take up 50% of the space, and the other two rows to each take up 25%.</p><p>You must update your code to utilize your new CSS file. To keep things from getting confusing, create a new file named <code>row_adjust.py</code> and add this code to it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UhT0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UhT0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UhT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png" width="1180" height="1150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1150,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142497,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UhT0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!UhT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a682d1-69a7-4d43-a5ea-7fa93a97feff_1180x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The only change here is to update the <code>CSS_PATH</code> to point to the new CSS file. When you run this code, you will see this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dGLE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dGLE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dGLE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:299842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dGLE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!dGLE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9696f066-937a-4cb0-8131-60459a99c762_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As expected, the first row in the grid is twice as high as the other two rows that follow it.</p><p><strong>Note:</strong> If you do not specify enough values to match your rows or columns, then Textual will use the values you provided and repeat them. That means that if you have four columns in your grid but specify <code>grid-columns: 3 2</code> then Textual will update it internally to be <code>grid-columns: 3 2 3 2</code>.</p><h3><strong>Automatic Row and Column Sizing</strong></h3><p>Textual also provides a way to set your column or row rules to resize based on the content in the widget automatically. You can use the string &#8220;auto&#8221; instead of specifying a unit or percentage size constraint. When you do that, Textual does the calculating for you.</p><p>Here&#8217;s an example in CSS where you set column one to be automatically sized:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I6P4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I6P4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 424w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 848w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 1272w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I6P4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png" width="1180" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64227,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I6P4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 424w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 848w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 1272w, https://substackcdn.com/image/fetch/$s_!I6P4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e7f90a-84db-4100-9754-5e2001b08744_1180x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The second column in the CSS above is set to 1fr, so it fills the remaining space.</p><p>You need to create some Python code to see this CSS in action. Open up a new Python file and name it <code>auto.py</code>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QMPG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QMPG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 424w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 848w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 1272w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QMPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png" width="1180" height="1194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1194,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147205,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QMPG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 424w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 848w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 1272w, https://substackcdn.com/image/fetch/$s_!QMPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80eb5f4-5e2c-4f9a-b975-c67106aff1f6_1180x1194.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here you create a set of four buttons as before. However, the first button in this code has an absurdly long label. When you run this code, the column resizes to fit that button's label within it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gi4e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gi4e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gi4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:305245,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gi4e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Gi4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59bb89f-c933-4f23-93e4-13aa642a691f_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Try updating the label to something shorter or longer and re-run the code. It&#8217;s good practice, and you&#8217;ll learn more by modifying the code yourself.</p><h3><strong>Spanning Cells</strong></h3><p>The real power of grids comes into play when you learn how to make a widget span cells. You can stretch a widget across multiple columns, rows, or both! You can control cell spanning using the following directives:</p><ul><li><p>column-span - followed by the number of columns to span across</p></li><li><p>row-span - followed by the number of rows to span across</p></li></ul><p>To make a specific widget span across cells, you need a way to select that widget in CSS. The easiest way to select a widget is to give it a unique identifier or ID.</p><p>You will see how this works by writing some CSS code where you select a widget with the id of &#8220;one&#8221;. You may recall that the way you select an id is to use the octothorpe or hash-tag character followed by the id name. So, in the case of a tag called &#8220;one&#8221;, you would use <code>#one</code>.</p><p>Create a new CSS file in your text editor called <code>col_span.tcss</code> and enter the following code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iEvJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iEvJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 424w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 848w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 1272w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iEvJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png" width="1180" height="980" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/691340c4-0239-47bf-8194-e448144a57cd_1180x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75893,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iEvJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 424w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 848w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 1272w, https://substackcdn.com/image/fetch/$s_!iEvJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691340c4-0239-47bf-8194-e448144a57cd_1180x980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The CSS code will make the widget with the id of &#8220;one&#8221; span across two columns. Also set the widget&#8217;s tint to blue so it stands out more. You also set the grid to be 3x3 instead of 2x3, so keep that in mind. Now that you have the CSS code, it&#8217;s time to write some Python!</p><p>Open up your Python editor and create a new file called <code>col_span.py</code>, then enter this code into it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fhaY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fhaY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fhaY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png" width="1180" height="1150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1150,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142859,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fhaY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!fhaY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24add8d-a5b7-47ab-8ff5-531ff70d5ba5_1180x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The first button widget is the one you gave the ID &#8220;one&#8221;. The CSS will select that widget and make it span two columns.</p><p>Here is the result you will see when you run the code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nR0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nR0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nR0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:296114,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nR0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nR0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20e2feb-2394-4f9f-a441-e0638cbfa375_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Try changing the number of columns spanned. You could also change the number of columns in the grid. Re-run the code after each change, or run it in developer mode so you can update the CSS in real time.</p><p>When you are done experimenting, go back to your text editor and create a new file called <code>row_span.tcss</code>. Yes, it&#8217;s time you learned how to use <code>row-span</code> too!</p><p>Here&#8217;s the code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l0wS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l0wS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 424w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 848w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l0wS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png" width="1180" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81680,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l0wS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 424w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 848w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!l0wS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb25041f-5592-4540-b3e5-883e8e033537_1180x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For this example, you will make the widget with the id of &#8220;one&#8221; span two columns AND two rows!</p><p>The Python code is the same as before except for the update to which <code>CSS_PATH</code> you are using:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NFSq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NFSq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NFSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png" width="1180" height="1150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1150,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143522,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NFSq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!NFSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3db884-0e2b-4afd-b2b9-d0c827ad322a_1180x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you run this code, you will see this output:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nTOC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nTOC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nTOC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314455,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nTOC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nTOC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170aaa85-a00e-4b42-905f-822f6da27a8d_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Good job! You now know how to make one or more widgets span columns or rows.</p><h3><strong>Adding a Gutter</strong></h3><p>Grids can also have gutters! The gutter is the space between the cells in a grid. You can change the gutter spacing using the <code>grid-gutter</code> CSS property. Cells have no gutter by default if you do not set a gutter property. That means that the cell&#8217;s edges touch each other. On the other hand, if you set a gutter value, it applies to ALL cells! You can only use <code>grid-gutter</code> on a widget with <code>layout: grid</code> applied to it.</p><p>You can see how this works by creating a new CSS file. For this example, you will set the <code>Screen</code> widget&#8217;s background color to something other than black. You can use any color you want, but for this example, use yellow. When you set the button, the cells will have spacing between them, revealing the background color of the <code>Screen</code> underneath your other widgets.</p><p>You will name this CSS file <code>gutter.tcss</code> and use the following code in it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z92i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z92i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 424w, https://substackcdn.com/image/fetch/$s_!z92i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 848w, https://substackcdn.com/image/fetch/$s_!z92i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 1272w, https://substackcdn.com/image/fetch/$s_!z92i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z92i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png" width="1180" height="852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70247,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z92i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 424w, https://substackcdn.com/image/fetch/$s_!z92i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 848w, https://substackcdn.com/image/fetch/$s_!z92i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 1272w, https://substackcdn.com/image/fetch/$s_!z92i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a0023db-a95f-4a66-8660-3dfafd85f7f0_1180x852.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Your CSS sets the <code>grid-size</code> to a 2x2 grid. You create a <code>grid-gutter</code> of 1 (one). In general, terminal cells are twice as tall as they are wide, so the cell spacing will look a little uneven.</p><p>Open up your Python editor and create a new file called <code>gutter.py</code>. Add this code to it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JgJi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JgJi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JgJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png" width="1180" height="1150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1150,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:139850,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JgJi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 424w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 848w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!JgJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9552755-26e1-44aa-a2a0-477ba7d8c385_1180x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you run your code, you will see something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nr8i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nr8i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nr8i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:328996,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/219442899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nr8i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 424w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 848w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!nr8i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02485e1-30b8-4e6f-860e-e1a13d9eeef5_2018x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The <code>grid-gutter</code> can also accept two values, which allow you to set the vertical and horizontal gutters, respectively. Since the cells are taller than they are wide, you can use a <code>grid-gutter: 1 2</code> setting to get consistent-looking spacing around your cells. Give it a try and see for yourself!</p><h2>Wrapping Up</h2><p>Now you know all you need to know to do grid layouts effectively in Textual. You can use this knowledge to create complex user interfaces for your applications. Alternatively, you can use nested containers (see the previous article) to do something similar.</p><p>As always, spend time practicing what you have learned, and experiment with different values to see how they change your application's appearance.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.pythonpapers.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Python Papers is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Textual - Using Containers for Layouts]]></title><description><![CDATA[Last week, you learned how to use CSS to arrange widgets vertically and horizontally in Textual.]]></description><link>https://www.pythonpapers.com/p/textual-using-containers-for-layouts</link><guid isPermaLink="false">https://www.pythonpapers.com/p/textual-using-containers-for-layouts</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Thu, 08 Oct 2026 15:21:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QMm6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb466a79f-da82-415b-8365-7b3e785f7a6a_1180x1194.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://www.pythonpapers.com/p/textual-laying-out-your-widgets">Last week</a>, you learned how to use CSS to arrange widgets vertically and horizontally in Textual. This week, you will learn another way to layout widgets using some of Textual&#8217;s built-in containers.</p><h2><strong>Layouts with Containers</strong></h2><p>The Textual package has several <a href="https://textual.textualize.io/api/containers">utility containers</a> you can use to lay out your widgets. You are most likely to use <code>Vertical</code>, <code>Horizontal</code>&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/textual-using-containers-for-layouts">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Textual - Laying Out Your Widgets]]></title><description><![CDATA[Widget layout is an important subject.]]></description><link>https://www.pythonpapers.com/p/textual-laying-out-your-widgets</link><guid isPermaLink="false">https://www.pythonpapers.com/p/textual-laying-out-your-widgets</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Thu, 01 Oct 2026 18:03:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HVOE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F095edeaf-c8e6-4af9-944b-dff0ec3fd46a_900x520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Widget layout is an important subject. By default, Textual arranges your widgets starting at the top of the screen and appending them in a vertical stack. Most graphical user interface toolkits follow a similar pattern; sometimes, they simply stack the widgets on top of each other.</p><p>Each GUI or TUI toolkit provides a way to lay out your widgets. In this t&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/textual-laying-out-your-widgets">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Vibe Coding Space Invaders with Python and pygame]]></title><description><![CDATA[Space Invaders was originally released in Japan in 1978 by Taito, and later in the USA by Midway.]]></description><link>https://www.pythonpapers.com/p/vibe-coding-space-invaders-with-python</link><guid isPermaLink="false">https://www.pythonpapers.com/p/vibe-coding-space-invaders-with-python</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Tue, 22 Sep 2026 12:38:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!79Iv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65404a46-16ba-423c-83b1-aa8611131de7_1608x1264.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Space Invaders was originally released in Japan in 1978 by Taito, and later in the USA by Midway. One of Space Invaders&#8217; standout features is that it was the first video game with endless gameplay. Space Invaders was also the first fixed shooter game. The object of the game is to shoot and destroy waves of descending aliens using a horizontally moving l&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/vibe-coding-space-invaders-with-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Dock Widgets in Textual]]></title><description><![CDATA[Textual is a Python package for creating beautiful terminal-based graphical interfaces.]]></description><link>https://www.pythonpapers.com/p/how-to-dock-widgets-in-textual</link><guid isPermaLink="false">https://www.pythonpapers.com/p/how-to-dock-widgets-in-textual</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Thu, 17 Sep 2026 12:52:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!odPv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf9c074-3ab9-4b53-89d2-e7fee300ee90_1704x896.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Textual is a Python package for creating beautiful terminal-based graphical interfaces.</p><p>Textual widgets support <em>docking</em>. When you dock a widget, the widget is removed from the layout and fixed in a static location. You can dock a widget to the following four positions:</p><ul><li><p>top</p></li><li><p>right</p></li><li><p>bottom</p></li><li><p>left</p></li></ul><p>A docked widget will not scroll out of view like widgets that are ins&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/how-to-dock-widgets-in-textual">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Plotext 6 Released!]]></title><description><![CDATA[Plotext released version 6.0.0 recently.]]></description><link>https://www.pythonpapers.com/p/plotext-6-released</link><guid isPermaLink="false">https://www.pythonpapers.com/p/plotext-6-released</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Thu, 10 Sep 2026 18:04:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nd_u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174bbdc2-5354-43fc-a009-d7fad791a5e8_1704x896.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://github.com/piccolomo/plotext/releases/tag/6.0.0">Plotext</a> released version 6.0.0 recently. Plotext is a Python package for creating plots in your terminal. With version 6.0.0, plotext has had a complete rewrite.</p><p>The biggest change is that plotest drawing is now done in a C++ kernel. The other big change is that <code>plotext.figure</code> is now the plot. Version 5 offered the same kind of thing, but in separate fun&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/plotext-6-released">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Are Python Tech Books Useful Anymore?]]></title><description><![CDATA[The question in this article's title has been on my mind a lot this year.]]></description><link>https://www.pythonpapers.com/p/are-python-tech-books-useful-anymore</link><guid isPermaLink="false">https://www.pythonpapers.com/p/are-python-tech-books-useful-anymore</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 02 Sep 2026 17:53:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hYhe!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e3c79a3-b014-495b-8ecb-094e0086d5f6_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The question in this article's title has been on my mind a lot this year. Do you find Python tech books useful right now? Let me know! If so, would you pay for them?</p><p>The reason this question has been in my mind is that I have run three Kickstarters for three different books in the last year. The first one was for my <a href="https://driscollis.gumroad.com/l/vibegames">Vibe Coding Videogames</a> book, which fai&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/are-python-tech-books-useful-anymore">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Creating a Line Chart with Matplotlib and Python]]></title><description><![CDATA[Creating plots, charts, and graphs is the very purpose of a plotting package, such as Matplotlib.]]></description><link>https://www.pythonpapers.com/p/creating-a-line-chart-with-matplotlib</link><guid isPermaLink="false">https://www.pythonpapers.com/p/creating-a-line-chart-with-matplotlib</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 26 Aug 2026 16:27:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z1Vb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90fd5bd-952b-4049-8284-cb2e54c84620_1616x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Creating plots, charts, and graphs is the very purpose of a plotting package, such as Matplotlib. You can plot all the standard charts you can think of with Matplotlib and Python. These charts can help you show how data changes over time. For example, you might want to plot the temperatures of your home city over several months or years.</p><p>By plotting thes&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/creating-a-line-chart-with-matplotlib">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Timing Your Python Code with Built-in Libraries]]></title><description><![CDATA[Sometimes you want to know why your code is slow.]]></description><link>https://www.pythonpapers.com/p/timing-your-python-code-with-built</link><guid isPermaLink="false">https://www.pythonpapers.com/p/timing-your-python-code-with-built</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Mon, 17 Aug 2026 13:52:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qA9l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F388ed089-dda5-4cd6-879f-d1cf62ac72cb_1498x554.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sometimes you want to know why your code is slow. The process of determining the slowness is called profiling. In this article, you will look at using some of Python&#8217;s internal libraries to help you track down your slow code.</p><h3>Using timeit</h3><p>Python comes with a module called <strong>timeit</strong>. You can use it to time small code snippets. The <strong>timeit</strong> module uses platform-&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/timing-your-python-code-with-built">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python 101 - Creating a Logging Decorator]]></title><description><![CDATA[Logging boilerplate can make adding logging to your code more complex.]]></description><link>https://www.pythonpapers.com/p/python-101-creating-a-logging-decorator</link><guid isPermaLink="false">https://www.pythonpapers.com/p/python-101-creating-a-logging-decorator</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Tue, 11 Aug 2026 17:35:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jHnC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F761f66f8-d066-43ae-861b-1fdc932d1e7f_1498x1108.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Logging boilerplate can make adding logging to your code more complex. One workaround is to wrap up your logging code in a decorator. Then, you can add a decorator to any functions that you want to add logging to.</p><p>This chapter will cover the following topics:</p><ul><li><p>What is a decorator?</p></li><li><p>Creating an exception logging decorator</p></li><li><p>Passing a logger to a decorator</p></li></ul><p>You wil&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/python-101-creating-a-logging-decorator">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Logging from Multiple Modules with Python]]></title><description><![CDATA[As a beginner, you usually write your application code in a single file.]]></description><link>https://www.pythonpapers.com/p/logging-from-multiple-modules-with</link><guid isPermaLink="false">https://www.pythonpapers.com/p/logging-from-multiple-modules-with</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 05 Aug 2026 14:02:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!w9Cg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8edeb654-62df-467e-b14a-8f3e974ff927_1250x1492.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a beginner, you usually write your application code in a single file. But soon, you&#8217;ll find that you have hundreds or thousands of lines of code in a file, which can become hard to manage.</p><p>Then, you break up your code into multiple files. In Python, each Python file is considered a module. A group of related modules is called a package.</p><p>Why does that m&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/logging-from-multiple-modules-with">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Adjusting Image Sharpness with Python and Pillow]]></title><description><![CDATA[Photographers try to take photos that are in focus, or sharp.]]></description><link>https://www.pythonpapers.com/p/adjusting-image-sharpness-with-python</link><guid isPermaLink="false">https://www.pythonpapers.com/p/adjusting-image-sharpness-with-python</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 29 Jul 2026 18:12:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pFy_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41c87fe-d3ce-4f6c-a65f-8cf4703c5f5c_872x732.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Photographers try to take photos that are in focus, or sharp. When they fail to do so, the images are blurry. You can sometimes make a blurry image look better by using a sharpening technique. You can also sharpen an image that is already in focus to make it look even better. You should try both methods on your photos as one may work better depending on&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/adjusting-image-sharpness-with-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python 101 3rd Edition Kickstarter Launch]]></title><description><![CDATA[For years, Python 101 has helped readers take their first steps into programming.]]></description><link>https://www.pythonpapers.com/p/python-101-3rd-edition-kickstarter</link><guid isPermaLink="false">https://www.pythonpapers.com/p/python-101-3rd-edition-kickstarter</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 22 Jul 2026 20:05:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HswJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For years, <em>Python 101</em> has helped readers take their first steps into programming. Whether you&#8217;re a complete beginner, a student, or someone looking to learn Python for work or personal projects, the goal has always been the same: make learning Python approachable, practical, and enjoyable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HswJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HswJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 424w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 848w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 1272w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HswJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png" width="715" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:715,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:305026,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pythonpapers.com/i/208111149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HswJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 424w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 848w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 1272w, https://substackcdn.com/image/fetch/$s_!HswJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f1fb50-d0c0-4b8e-b920-dfdb8ff5dfdf_715x398.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Python has continued to evolve, and it&#8217;s time for the book to evo&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/python-101-3rd-edition-kickstarter">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Adjusting Image Brightness with Python and Pillow]]></title><description><![CDATA[If you have been following this newsletter, you will recall learning about changing an image's contrast and adjusting its color balance with Python.]]></description><link>https://www.pythonpapers.com/p/adjusting-image-brightness-with-python</link><guid isPermaLink="false">https://www.pythonpapers.com/p/adjusting-image-brightness-with-python</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Tue, 21 Jul 2026 13:11:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NbxY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c3af32-92d1-488c-b552-2e33c1268ac9_490x726.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you have been following this newsletter, <span>you will recall learning about&nbsp;</span><a href="https://www.pythonpapers.com/p/changing-image-contrast-with-python"><span>changing an image's contrast&nbsp;</span></a><span>and&nbsp;</span><a href="https://www.pythonpapers.com/p/adjusting-image-color-balance-with"><span>adjusting its color balance&nbsp;</span></a>with Python. Today you will tackle the subject of image brightness!</p><p>Image brightness is a way to measure the intensity or luminosity of an image after it has been captured. Pillow&#8217;s <code>ImageEnhance</code> module allows you to modi&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/adjusting-image-brightness-with-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[An Intro to Spiel – Creating Presentations in Your Terminal with Python]]></title><description><![CDATA[Have you ever wanted to create a presentation in your computer&#8217;s terminal?]]></description><link>https://www.pythonpapers.com/p/an-intro-to-spiel-creating-presentations</link><guid isPermaLink="false">https://www.pythonpapers.com/p/an-intro-to-spiel-creating-presentations</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Tue, 14 Jul 2026 19:22:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eeOS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d99c096-304e-44bb-a871-02f379a7a761_1284x938.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever wanted to create a presentation in your computer&#8217;s terminal? While this is an uncommon need, a clever open source developer has provided a solution to this problem! The project is called <a href="https://github.com/JoshKarpel/spiel">Spiel</a>, and while it is currently archived, the idea is pretty cool. Spiel uses the <a href="https://github.com/Textualize/rich">Rich</a> package to create the slides for your presentation. Note: while th&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/an-intro-to-spiel-creating-presentations">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[New Book Release: Python Typing]]></title><description><![CDATA[I am happy to announce that my latest book, Python Typing, is now available on all platforms.]]></description><link>https://www.pythonpapers.com/p/new-book-release-python-typing</link><guid isPermaLink="false">https://www.pythonpapers.com/p/new-book-release-python-typing</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Thu, 09 Jul 2026 14:48:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P983!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc323a123-f51e-4b67-8a91-f4875d91619f_683x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I am happy to announce that my latest book, <strong>Python Typing</strong>, is now available on all platforms. You can get your copy on <a href="https://driscollis.gumroad.com/l/pytyping">Gumroad</a> or <a href="https://leanpub.com/pythontyping">Leanpub</a> or <a href="https://www.amazon.com/dp/B0H5L5V9YZ">Amazon</a></p><p>Python has had type hinting support since Python 3.5, over TEN years ago! However, Python&#8217;s type annotations have changed repeatedly over the years. In <strong>Python Typing: Type Checking for Python Programmers</strong>, you&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/new-book-release-python-typing">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Changing Image Contrast with Python and Pillow]]></title><description><![CDATA[In the last article, you learned how to adjust an image&#8217;s color balance.]]></description><link>https://www.pythonpapers.com/p/changing-image-contrast-with-python</link><guid isPermaLink="false">https://www.pythonpapers.com/p/changing-image-contrast-with-python</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Tue, 07 Jul 2026 16:19:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y4IQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4320a7-9c2a-4d77-ab2d-ed0b0fd11651_842x566.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the last <a href="https://www.pythonpapers.com/p/adjusting-image-color-balance-with">article</a>, you learned how to adjust an image&#8217;s color balance. Today you will learn how to change the contrast in an image.</p><p>Contrast is defined as the difference between dark and light in an image. A high-contrast image will have bright highlights and nice, dark shadows. Colors are usually bold and display texture. A low-contrast image, on the &#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/changing-image-contrast-with-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python eBook and Course Summer Sale]]></title><description><![CDATA[It&#8217;s officially summer, and I am bringing you some HOT Python deals today!]]></description><link>https://www.pythonpapers.com/p/python-ebook-and-course-summer-sale</link><guid isPermaLink="false">https://www.pythonpapers.com/p/python-ebook-and-course-summer-sale</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 01 Jul 2026 17:44:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xdqR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1596fb8-ef95-4e05-911e-02989b8bb521_1024x588.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s officially summer, and I am bringing you some HOT Python deals today! Get 33% off almost all my books and courses on Gumroad today using the following <strong>H5N5F7K</strong></p><p>You can start learning the basics of Python with Python 101, or get more targeted learning with my book, Python Logging. If you want to create a user interface, then you might enjoy Creating T&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/python-ebook-and-course-summer-sale">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Adjusting Image Color Balance with Python]]></title><description><![CDATA[Pillow includes the ImageEnhance A module that contains some classes you can use to enhance your images.]]></description><link>https://www.pythonpapers.com/p/adjusting-image-color-balance-with</link><guid isPermaLink="false">https://www.pythonpapers.com/p/adjusting-image-color-balance-with</guid><dc:creator><![CDATA[Mike Driscoll]]></dc:creator><pubDate>Wed, 24 Jun 2026 14:09:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ViN1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7ff77ee-3aee-475f-977f-efa4847dce24_480x648.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pillow includes the <code>ImageEnhance</code> A module that contains some classes you can use to enhance your images. All of the included classes implement a common interface via the <code>enhance()</code> method. This makes learning how to use <code>ImageEnhance</code> easier.</p><p>You can read more about these classes in the <a href="https://pillow.readthedocs.io/en/3.0.x/reference/ImageEnhance.html">documentation</a>.</p><p>In this article, you will focus only on adjusting an imag&#8230;</p>
      <p>
          <a href="https://www.pythonpapers.com/p/adjusting-image-color-balance-with">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>