<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>learning python &#187; IronPython</title>
	<atom:link href="http://www.learningpython.com/category/python/ironpython/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.learningpython.com</link>
	<description>one man's journey into python...</description>
	<lastBuildDate>Mon, 26 Apr 2010 01:21:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IronPython Hello World Tutorial</title>
		<link>http://www.learningpython.com/2006/10/02/ironpython-hello-world-tutorial/</link>
		<comments>http://www.learningpython.com/2006/10/02/ironpython-hello-world-tutorial/#comments</comments>
		<pubDate>Tue, 03 Oct 2006 03:51:45 +0000</pubDate>
		<dc:creator>selsine</dc:creator>
				<category><![CDATA[IronPython]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.learningpython.com/?p=43</guid>
		<description><![CDATA[
			
				
			
		
As some of you may have heard IronPython 1.0 has been released.  If you don&#8217;t&#8217; know what IronPython is, it&#8217;s:
a new implementation of the Python programming language running on .NET. It supports an interactive console with fully dynamic compilation. It is well integrated with the rest of the .NET Framework and makes all .NET [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.learningpython.com%2F2006%2F10%2F02%2Fironpython-hello-world-tutorial%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.learningpython.com%2F2006%2F10%2F02%2Fironpython-hello-world-tutorial%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>As some of you may have heard <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython">IronPython 1.0</a> has been released.  If you don&#8217;t&#8217; know what IronPython is, it&#8217;s:</p>
<blockquote><p>a new implementation of the Python programming language running on .NET. It supports an interactive console with fully dynamic compilation. It is well integrated with the rest of the .NET Framework and makes all .NET libraries easily available to Python programmers, while maintaining full compatibility with the Python language.</p></blockquote>
<p>The cool thing about IronPthon is that it also works with the Windows Presentation Foundation which will be released when Windows Vista is released and available for Windows XP and Windows Vista.</p>
<p>I thought that this was pretty interesting so I thought I&#8217;d try playing with it and write a quick tutorial.</p>
<h3>Requirement</h3>
<p>For this tutorial you need the following:</p>
<ul>
<li>Microsoft Windows XP (may work with 2000)</li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&#038;displaylang=en">.Net runtime 2.0</a></li>
<li><a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=IronPython">IronPython</a></li>
<li><a href="http://www.microsoft.com/products/expression/en/interactive_designer/id_free_trial.aspx">Microsoft Expression Interactive Designer Beta</a></li>
<li><a href="http://msdn.microsoft.com/vstudio/express/">Visual Studio 2005 Express</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&#038;displaylang=en">.Net 3.0 Beta</a></li>
</ul>
<p>For this tutorial I has assumed that you have installed IronPython to:</p>
<p><code>C:\IronPython</code></p>
<h3>The GUI</h3>
<p>Once you have everything installed load up Microsoft Expression Interactive Designer (MEID from now on) or sparkle as it used to be called and close the Welcome Screen.  You might notice that MEID is very slow, on my system the program just seems to c-r-a-w-l, but it does allow you to do some pretty neat things.</p>
<p>After it has finished loading and clearing the Welcome screen you should be left with a blank canvas.  The canvas is too large for the Hello World program we&#8217;re creating so resize the canvas until it has reached a suitable size.</p>
<p>Then with the canvas selected, select the Background item in the Appearance pallet and set the background of the canvas (our window) to something suitable using the colour picker below.  I selected a nice dark shade of green.</p>
<p><img style="margin: 0pt 10px 10px 0pt;" src="http://www.learningpython.com/images/ip_01/ip_01.png" alt="Sparkle" border="0" /></p>
<p><span id="more-43"></span></p>
<p>The next step is to add a button to our window.  To do this select the Button item in the Library palette and draw the button onto the canvas.</p>
<p><img style="margin: 0pt 10px 10px 0pt;" src="http://www.learningpython.com/images/ip_01/ip_02.png" alt="Sparkle Button" border="0" /></p>
<p><img style="margin: 0pt 10px 10px 0pt;" src="http://www.learningpython.com/images/ip_01/ip_03.png" alt="Sparkle Button" border="0" /></p>
<p>Next we want to do change the text on the button to be &#8220;Press me!&#8221; to do that select the Text tool in the Tools pallet (it is the solid black letter A) and click on the button.  You can now edit the text, so delete the &#8220;button&#8221; text and type &#8220;Press me!&#8221;  Select the selection tool in the Tools pallet (the black arrow) when you are done.</p>
<p>The next thing to do is save your project (to whatever folder you wish) and then export your xaml code (File | Export XAML)  to:</p>
<p><code>C:\IronPython\Projects\HelloWorld\hw.xaml</code></p>
<h3>The Code</h3>
<p>The reference for almost all of this code is the tutorial and sample applications that can be found on the <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython">IronPython website</a>.  If you want to go further then this tutorial, or if you want to understand every line of code I suggest you start there.</p>
<p>The first thing to do is create our HelloWorld.py file in:</p>
<p><code>C:\IronPython\Projects\HelloWorld\</code></p>
<p>Now we have to import a whole bunch of stuff and create some helper functions.  This code was taken from the IronPython tutorial file avalon.py, which should be installed in your C:\IronPython\Tutorial directory  It had to change it slightly since it crated a System.Windows.Application object which has to be a singleton.</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-reserved">import </span><span class="hl-identifier">clr

clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">PresentationCore</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">PresentationFramework</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WindowsBase</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">IronPython</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)

</span><span class="hl-reserved">from </span><span class="hl-identifier">math </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Media </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Media</span><span class="hl-default">.</span><span class="hl-identifier">Animation </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Controls </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Shapes </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Threading </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Threading </span><span class="hl-reserved">import</span><span class="hl-default"> *

</span><span class="hl-reserved">import </span><span class="hl-identifier">IronPython

</span><span class="hl-comment"># Taken from the IronPython Samples
</span><span class="hl-reserved">def </span><span class="hl-identifier">LoadXaml</span><span class="hl-brackets">(</span><span class="hl-identifier">filename</span><span class="hl-brackets">)</span><span class="hl-default">:
    </span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">IO </span><span class="hl-reserved">import</span><span class="hl-default"> *
    </span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Markup </span><span class="hl-reserved">import </span><span class="hl-identifier">XamlReader
    f</span><span class="hl-default"> = </span><span class="hl-identifier">FileStream</span><span class="hl-brackets">(</span><span class="hl-identifier">filename</span><span class="hl-code">, </span><span class="hl-identifier">FileMode</span><span class="hl-code">.</span><span class="hl-identifier">Open</span><span class="hl-brackets">)
    </span><span class="hl-reserved">try</span><span class="hl-default">:
	</span><span class="hl-identifier">element</span><span class="hl-default"> = </span><span class="hl-identifier">XamlReader</span><span class="hl-default">.</span><span class="hl-identifier">Load</span><span class="hl-brackets">(</span><span class="hl-identifier">f</span><span class="hl-brackets">)
    </span><span class="hl-reserved">finally</span><span class="hl-default">:
	</span><span class="hl-identifier">f</span><span class="hl-default">.</span><span class="hl-identifier">Close</span><span class="hl-brackets">()
    </span><span class="hl-reserved">return </span><span class="hl-identifier">element

</span><span class="hl-comment"># Taken from the IronPython Samples
</span><span class="hl-reserved">def </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-brackets">)</span><span class="hl-default">:
    </span><span class="hl-reserved">yield </span><span class="hl-identifier">tree
    </span><span class="hl-reserved">if </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Children</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">child </span><span class="hl-reserved">in </span><span class="hl-identifier">tree</span><span class="hl-default">.</span><span class="hl-identifier">Children</span><span class="hl-default">:
            </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">child</span><span class="hl-brackets">)</span><span class="hl-default">:
                </span><span class="hl-reserved">yield </span><span class="hl-identifier">x
    </span><span class="hl-reserved">elif </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Child</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">.</span><span class="hl-identifier">Child</span><span class="hl-brackets">)</span><span class="hl-default">:
            </span><span class="hl-reserved">yield </span><span class="hl-identifier">x
    </span><span class="hl-reserved">elif </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Content</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">.</span><span class="hl-identifier">Content</span><span class="hl-brackets">)</span><span class="hl-default">:
            </span><span class="hl-reserved">yield </span><span class="hl-identifier">x</span></pre></div></div>
<p>This code simply initializes IronPython, the Windows Presentation FrameWork, and creates two helper functions that will make the rest of our code easier.</p>
<p>The next thing that we do is create our main class which is of the type <a href="http://windowssdk.msdn.microsoft.com/en-us/library/system.windows.application.aspx">System.Windows.Application</a> and initialize it:</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">class </span><span class="hl-identifier">HelloWorld</span><span class="hl-brackets">(</span><span class="hl-identifier">Application</span><span class="hl-brackets">)</span><span class="hl-default">:

	</span><span class="hl-reserved">def </span><span class="hl-identifier">__init__</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)</span><span class="hl-default">:
		
		</span><span class="hl-identifier">Application</span><span class="hl-default">.</span><span class="hl-identifier">__init__</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)

		</span><span class="hl-comment"># Create the Window System.Windows.Window
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default"> = </span><span class="hl-identifier">Window</span><span class="hl-brackets">()
		</span><span class="hl-comment"># Load the Xaml
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Content</span><span class="hl-default"> = </span><span class="hl-identifier">LoadXaml</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">hw.xaml</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
		</span><span class="hl-comment"># Set the Window Title
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Title</span><span class="hl-default"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">Hello World</span><span class="hl-quotes">&quot;
		</span><span class="hl-comment"># Make the Window the same size as the Xaml
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">SizeToContent</span><span class="hl-default"> = </span><span class="hl-identifier">SizeToContent</span><span class="hl-default">.</span><span class="hl-identifier">WidthAndHeight
		</span><span class="hl-comment"># Connect the buttons with their events
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">connect_buttons</span><span class="hl-brackets">()
		</span><span class="hl-comment"># Show the Window
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Show</span><span class="hl-brackets">()</span></pre></div></div>
<p>The first thing that we do is create our application&#8217;s window which is of type <a href="http://windowssdk.msdn.microsoft.com/en-us/library/system.windows.window.aspx">System.Windows.Window</a>.  Then we set the window&#8217;s <a href="http://windowssdk.msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.content.aspx">Content</a> to be our xaml code that we load.</p>
<p>Then we set the window&#8217;s <a href="http://windowssdk.msdn.microsoft.com/en-us/library/system.windows.window.sizetocontent.aspx">SizeToContent</a> property to size to the height and width of the content, which is the XAML that we loaded.</p>
<p>Then we call a helper function (not shown yet) which will connect our button&#8217;s Click event with a function, and then we call the Show() function to show the window.</p>
<p>The connect_buttons function is defined as follows:</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">def </span><span class="hl-identifier">connect_buttons</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)</span><span class="hl-default">:
	</span><span class="hl-quotes">&quot;&quot;&quot;</span><span class="hl-string">Connect the button to its clicked handler</span><span class="hl-quotes">&quot;&quot;&quot;
	
	</span><span class="hl-reserved">for </span><span class="hl-identifier">item </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-code">.</span><span class="hl-identifier">window</span><span class="hl-brackets">)</span><span class="hl-default">:
		</span><span class="hl-reserved">if </span><span class="hl-builtin">isinstance</span><span class="hl-brackets">(</span><span class="hl-identifier">item</span><span class="hl-code">, </span><span class="hl-identifier">Button</span><span class="hl-brackets">)</span><span class="hl-default">:
			</span><span class="hl-comment"># It's our one and only button!
			# Connect the click event
			</span><span class="hl-identifier">item</span><span class="hl-default">.</span><span class="hl-identifier">Click</span><span class="hl-default"> += </span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">on_button_clicked</span></pre></div></div>
<p>What this function does is walk through all of our window&#8217;s children, and if it encounters a button it adds our on_button_clicked() function to that buttons Click handler.</p>
<p>on_button_clicked() is a pretty simple function that sets whatever button was clicked&#8217;s text to be &#8220;Hello World!&#8221;</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">def </span><span class="hl-identifier">on_button_clicked</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-code">, </span><span class="hl-identifier">button</span><span class="hl-code">, *</span><span class="hl-identifier">args</span><span class="hl-brackets">)</span><span class="hl-default">:
	</span><span class="hl-comment"># Set the Text to be Hello World!
	</span><span class="hl-identifier">button</span><span class="hl-default">.</span><span class="hl-identifier">Content</span><span class="hl-default"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">Hello World</span><span class="hl-quotes">&quot;</span></pre></div></div>
<p>That&#8217;s basically it for the code, all we have to do now is make sure that something happens if this python file is launched directly:</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">if </span><span class="hl-identifier">__name__</span><span class="hl-default"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">__main__</span><span class="hl-quotes">&quot;</span><span class="hl-default">:
	
	</span><span class="hl-identifier">hw</span><span class="hl-default"> = </span><span class="hl-identifier">HelloWorld</span><span class="hl-brackets">()
	</span><span class="hl-identifier">hw</span><span class="hl-default">.</span><span class="hl-identifier">Run</span><span class="hl-brackets">()</span></pre></div></div>
<p>Then if you want to launch this project and test it out you can start the Windows command line and browse to C:\ItronPython\Projects\HelloWord and launch the following command:</p>
<p><code>C:\IronPython\Projects\HelloWorld>C:\IronPython\ipy.exe HelloWorld.py</code></p>
<p>When you do you should be greeted with this:</p>
<p><img style="margin: 0pt 10px 10px 0pt;" src="http://www.learningpython.com/images/ip_01/ip_04.png" alt="Windows Presentation WIndow" border="0" /></p>
<p>Here is all the code in one nice window:</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-reserved">import </span><span class="hl-identifier">clr

clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">PresentationCore</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">PresentationFramework</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WindowsBase</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
</span><span class="hl-identifier">clr</span><span class="hl-default">.</span><span class="hl-identifier">AddReferenceByPartialName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">IronPython</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)

</span><span class="hl-reserved">from </span><span class="hl-identifier">math </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Media </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Media</span><span class="hl-default">.</span><span class="hl-identifier">Animation </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Controls </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Shapes </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Threading </span><span class="hl-reserved">import</span><span class="hl-default"> *
</span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Threading </span><span class="hl-reserved">import</span><span class="hl-default"> *

</span><span class="hl-reserved">import </span><span class="hl-identifier">IronPython

</span><span class="hl-comment"># Taken from the IronPython Samples
</span><span class="hl-reserved">def </span><span class="hl-identifier">LoadXaml</span><span class="hl-brackets">(</span><span class="hl-identifier">filename</span><span class="hl-brackets">)</span><span class="hl-default">:
    </span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">IO </span><span class="hl-reserved">import</span><span class="hl-default"> *
    </span><span class="hl-reserved">from </span><span class="hl-identifier">System</span><span class="hl-default">.</span><span class="hl-identifier">Windows</span><span class="hl-default">.</span><span class="hl-identifier">Markup </span><span class="hl-reserved">import </span><span class="hl-identifier">XamlReader
    f</span><span class="hl-default"> = </span><span class="hl-identifier">FileStream</span><span class="hl-brackets">(</span><span class="hl-identifier">filename</span><span class="hl-code">, </span><span class="hl-identifier">FileMode</span><span class="hl-code">.</span><span class="hl-identifier">Open</span><span class="hl-brackets">)
    </span><span class="hl-reserved">try</span><span class="hl-default">:
	</span><span class="hl-identifier">element</span><span class="hl-default"> = </span><span class="hl-identifier">XamlReader</span><span class="hl-default">.</span><span class="hl-identifier">Load</span><span class="hl-brackets">(</span><span class="hl-identifier">f</span><span class="hl-brackets">)
    </span><span class="hl-reserved">finally</span><span class="hl-default">:
	</span><span class="hl-identifier">f</span><span class="hl-default">.</span><span class="hl-identifier">Close</span><span class="hl-brackets">()
    </span><span class="hl-reserved">return </span><span class="hl-identifier">element

</span><span class="hl-comment"># Taken from the IronPython Samples
</span><span class="hl-reserved">def </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-brackets">)</span><span class="hl-default">:
    </span><span class="hl-reserved">yield </span><span class="hl-identifier">tree
    </span><span class="hl-reserved">if </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Children</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">child </span><span class="hl-reserved">in </span><span class="hl-identifier">tree</span><span class="hl-default">.</span><span class="hl-identifier">Children</span><span class="hl-default">:
            </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">child</span><span class="hl-brackets">)</span><span class="hl-default">:
                </span><span class="hl-reserved">yield </span><span class="hl-identifier">x
    </span><span class="hl-reserved">elif </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Child</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">.</span><span class="hl-identifier">Child</span><span class="hl-brackets">)</span><span class="hl-default">:
            </span><span class="hl-reserved">yield </span><span class="hl-identifier">x
    </span><span class="hl-reserved">elif </span><span class="hl-builtin">hasattr</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">Content</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">:
        </span><span class="hl-reserved">for </span><span class="hl-identifier">x </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">tree</span><span class="hl-code">.</span><span class="hl-identifier">Content</span><span class="hl-brackets">)</span><span class="hl-default">:
            </span><span class="hl-reserved">yield </span><span class="hl-identifier">x

</span><span class="hl-reserved">class </span><span class="hl-identifier">HelloWorld</span><span class="hl-brackets">(</span><span class="hl-identifier">Application</span><span class="hl-brackets">)</span><span class="hl-default">:

	</span><span class="hl-reserved">def </span><span class="hl-identifier">__init__</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)</span><span class="hl-default">:
		
		</span><span class="hl-identifier">Application</span><span class="hl-default">.</span><span class="hl-identifier">__init__</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)
		</span><span class="hl-comment"># Create the Window System.Windows.Window
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default"> = </span><span class="hl-identifier">Window</span><span class="hl-brackets">()
		</span><span class="hl-comment"># Load the Xaml
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Content</span><span class="hl-default"> = </span><span class="hl-identifier">LoadXaml</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">hw.xaml</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
		</span><span class="hl-comment"># Set the Window Title
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Title</span><span class="hl-default"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">Hello World</span><span class="hl-quotes">&quot;
		</span><span class="hl-comment"># Make the Window the same size as the Xaml
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">SizeToContent</span><span class="hl-default"> = </span><span class="hl-identifier">SizeToContent</span><span class="hl-default">.</span><span class="hl-identifier">WidthAndHeight
		</span><span class="hl-comment"># Connect the buttons with their events
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">connect_buttons</span><span class="hl-brackets">()
		</span><span class="hl-comment"># Show the Window
		</span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">window</span><span class="hl-default">.</span><span class="hl-identifier">Show</span><span class="hl-brackets">()
		
	</span><span class="hl-reserved">def </span><span class="hl-identifier">connect_buttons</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-brackets">)</span><span class="hl-default">:
		</span><span class="hl-quotes">&quot;&quot;&quot;</span><span class="hl-string">Connect the button to its clicked handler</span><span class="hl-quotes">&quot;&quot;&quot;
		
		</span><span class="hl-reserved">for </span><span class="hl-identifier">item </span><span class="hl-reserved">in </span><span class="hl-identifier">Walk</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-code">.</span><span class="hl-identifier">window</span><span class="hl-brackets">)</span><span class="hl-default">:
			</span><span class="hl-reserved">if </span><span class="hl-builtin">isinstance</span><span class="hl-brackets">(</span><span class="hl-identifier">item</span><span class="hl-code">, </span><span class="hl-identifier">Button</span><span class="hl-brackets">)</span><span class="hl-default">:
				</span><span class="hl-comment"># It's our one and only button!
				# Connect the click event
				</span><span class="hl-identifier">item</span><span class="hl-default">.</span><span class="hl-identifier">Click</span><span class="hl-default"> += </span><span class="hl-identifier">self</span><span class="hl-default">.</span><span class="hl-identifier">on_button_clicked
	
	</span><span class="hl-reserved">def </span><span class="hl-identifier">on_button_clicked</span><span class="hl-brackets">(</span><span class="hl-identifier">self</span><span class="hl-code">, </span><span class="hl-identifier">button</span><span class="hl-code">, *</span><span class="hl-identifier">args</span><span class="hl-brackets">)</span><span class="hl-default">:
		</span><span class="hl-comment"># Set the Text to be Hello World!
		</span><span class="hl-identifier">button</span><span class="hl-default">.</span><span class="hl-identifier">Content</span><span class="hl-default"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">Hello World</span><span class="hl-quotes">&quot;
		

</span><span class="hl-reserved">if </span><span class="hl-identifier">__name__</span><span class="hl-default"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">__main__</span><span class="hl-quotes">&quot;</span><span class="hl-default">:
	
	</span><span class="hl-identifier">hw</span><span class="hl-default"> = </span><span class="hl-identifier">HelloWorld</span><span class="hl-brackets">()
	</span><span class="hl-identifier">hw</span><span class="hl-default">.</span><span class="hl-identifier">Run</span><span class="hl-brackets">()</span></pre></div></div>
<div style="float:right;margin:0px 0px 0px 0px;"><a href="http://www.google.com/reader/link?url=http://www.learningpython.com/2006/10/02/ironpython-hello-world-tutorial/&title=IronPython Hello World Tutorial&srcTitle=learning python&srcURL=http://www.learningpython.com"target="_blank" rel=""><img border="0" src="http://www.learningpython.com/wp-content/plugins/wp-google-buzz/icon/12.png" style="opacity:1;filter:alpha(opacity=100)" onmouseover="this.style.opacity=0.8;this.filters.alpha.opacity=70" onmouseout="this.style.opacity=1;this.filters.alpha.opacity=100"/> </a></div>]]></content:encoded>
			<wfw:commentRss>http://www.learningpython.com/2006/10/02/ironpython-hello-world-tutorial/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
