<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5588482865109218843</atom:id><lastBuildDate>Thu, 16 Feb 2012 22:41:10 +0000</lastBuildDate><category>OOP</category><category>Competition</category><category>download</category><category>Firefox</category><category>Computers</category><category>4</category><category>python</category><category>5</category><category>wxPython</category><category>programming</category><category>tutorial</category><title>Computers, Science and other ramblings</title><description>What more could you need?</description><link>http://paulthom12345.blogspot.com/</link><managingEditor>noreply@blogger.com (paulthom12345)</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ComputersScienceAndOtherRamblings" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="computersscienceandotherramblings" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-781081314774868814</guid><pubDate>Mon, 29 Sep 2008 03:43:00 +0000</pubDate><atom:updated>2008-10-25T20:34:04.980-07:00</atom:updated><title>We have moved</title><description>&lt;span style="font-size:180%;"&gt;This is just a quick post to say we have moved to&lt;br /&gt;            &lt;a href="http://www.wxpython.webs.com"&gt;    http://wxpython.webs.com&lt;/a&gt;&lt;br /&gt;Hope to see you there&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-781081314774868814?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/09/we-have-moved.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>39</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-7531262950055361651</guid><pubDate>Sun, 13 Jul 2008 03:30:00 +0000</pubDate><atom:updated>2008-07-12T21:39:42.553-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial Part 6</title><description>Today we will be learning how easy it is to use images from your computer in wxPython. We are going to make an image viewer, using a Panel to display the images. We will also have an open dialog that looks quite fancy and is very useful for programs in which you open files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part6&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Images&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="mycode"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1    import wx&lt;br /&gt;&lt;br /&gt;2    class ImageFrame(wx.Frame):&lt;br /&gt;3        def __init__(self):&lt;br /&gt;4            wx.Frame.__init__(self,None,title = "Picture Viewer")&lt;br /&gt;5            self.menubar = wx.MenuBar()&lt;br /&gt;6            self.file = wx.Menu()&lt;br /&gt;7            self.SetMenuBar(self.menubar)&lt;br /&gt;8            self.menubar.Append(self.file,'&amp;amp;File')&lt;br /&gt;9            self.get = self.file.Append(wx.ID_ANY,'Get &amp;amp;Picture')&lt;br /&gt;10           self.Bind(wx.EVT_MENU,self.getpicture,self.get)&lt;br /&gt;11           self.picturepanel = wx.Panel(self,style = wx.SUNKEN_BORDER)&lt;br /&gt;12           self.vbox = wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;13           self.getpicbut = wx.Button(self,wx.ID_ANY,label = 'Get Picture')&lt;br /&gt;14           self.getpicbut.Bind(wx.EVT_LEFT_DOWN,self.getpicture)&lt;br /&gt;15           self.vbox.Add(self.getpicbut,proportion=0,flag = wx.EXPAND)&lt;br /&gt;16           self.vbox.Add(self.picturepanel,proportion=1,flag = wx.EXPAND)&lt;br /&gt;17           self.SetSizer(self.vbox)&lt;br /&gt;18           self.Show()&lt;br /&gt;19           self.img =0&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;20       def getpicture(self,event):&lt;br /&gt;21           filedialog = wx.FileDialog(self,&lt;br /&gt;22                                 message = 'Choose an image to open',&lt;br /&gt;23                                 defaultDir = '',&lt;br /&gt;24                                 defaultFile = '',&lt;br /&gt;25                                 wildcard = 'Supported Image files (*.gif;*.png;*.jpg;*.bmp) | *.gif; *.png; *.jpg; *.bmp',&lt;br /&gt;27                                  style = wx.OPEN)&lt;br /&gt;28           if filedialog.ShowModal() == wx.ID_OK:&lt;br /&gt;29               if self.img:&lt;br /&gt;30                  self.img.Destroy()&lt;br /&gt;31              self.path = filedialog.GetPath()&lt;br /&gt;32              self.bmp = wx.Bitmap(self.path)&lt;br /&gt;33              self.img = wx.StaticBitmap(self.picturepanel,wx.ID_ANY,self.bmp)&lt;br /&gt;34              self.picturepanel.Refresh()&lt;br /&gt;35              imgsize = self.img.Size&lt;br /&gt;36              x = imgsize[0]+12&lt;br /&gt;37              y = imgsize[1]+80&lt;br /&gt;38              self.Size = (x,y)&lt;br /&gt;    &lt;br /&gt;        &lt;br /&gt;39   app = wx.App(redirect = False)&lt;br /&gt;40   frame = ImageFrame()&lt;br /&gt;41   app.MainLoop()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So the first thing you'll probably notice is the numbers, this is to make refrencing the lines easiers for you and me.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LINE BY LINE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 1-4:&lt;/span&gt;Here we just to the usual stuff except we give out frame the title of 'Picture Viewer'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 5-10:&lt;/span&gt;This is getting the menu set up, notice we are only having one menu so we only create one wx.Menu(). For more info on menus see my last tutorial which outlines how to make them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 11: &lt;/span&gt;Here we make our panel that will house our picture, notice that we add a style as well as a parent to the panel. This is to make the panel look different. In this case it will have a sunken border all around it. There are many other styles you can use with panels, to find out which ones you like its easiest to experiment with the wxPython libraries. Oh and finally make sure to make you panels after you have made your menus otherwise the menus will try to add themselves to the panel and things start to screw up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 12:&lt;/span&gt;Just making a vertical sizer for later use&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 13,14:&lt;/span&gt;Here we make a button and bind it to the event getpicture. We will use this button as well as the menu item we made to get the image. Note the button is a child to self, not self.picturepanel&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 15,16:&lt;/span&gt;Now to add our stuff to the sizer. We will add the button first and then make its proportion=0, this means it will stay as flat as possible (if it were a horizontal sizer it would remain as thin as possible). We also add a flag, wx.EXPAND. This now means out button will be as flat as possible but will take up as much room as possible from left to right.&lt;br /&gt;&lt;br /&gt;Then we get to add our panel to the sizer, we make this as big as possible by having proportion=1 and a flag of wx.EXPAND&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 17,18:&lt;/span&gt;Just the usual setting the sizer and setting the frame to show&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 19: &lt;/span&gt;What we are doing here is creating a variable for use later in the program. This is used to determine the first time that getpicture method is run. We will talk about this variable a bit more later.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 21:&lt;/span&gt; Welcome to the wonderful world of FileDialogs. These are great for using if you want to load or save a file. The possible arguments for this are as follows:&lt;br /&gt;wxFileDialog&lt;p&gt;&lt;b&gt;wxFileDialog&lt;/b&gt;&lt;b&gt; (&lt;/b&gt;&lt;i&gt;parent&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;message =  "Choose a file"&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;defaultDir =  ""&lt;/i&gt;, &lt;i&gt;defaultFile = ""&lt;/i&gt;, &lt;i&gt;wildcard="*.*"&lt;/i&gt;,&lt;b&gt; &lt;/b&gt;&lt;i&gt;style = wxFD_DEFAULT_STYLE&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;pos =  wxDefaultPosition&lt;/i&gt;, &lt;i&gt;sz = xDefaultSize&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;name =  "filedlg"&lt;/i&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The style we need to add to our FileDialog is wx.OPEN, this will convert the FileDialog into something prepared to open files, all the buttons in filedialog will be labeled appropriatley.&lt;/p&gt;&lt;p&gt;Something i feel i should go &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VKqTWwZH05I/SHmA1pgvzkI/AAAAAAAAADc/Z2VI1iNtv7c/s1600-h/filed.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_VKqTWwZH05I/SHmA1pgvzkI/AAAAAAAAADc/Z2VI1iNtv7c/s320/filed.bmp" alt="" id="BLOGGER_PHOTO_ID_5222346902077427266" border="0" /&gt;&lt;/a&gt;through is wildcards, wildcards are the things that let programs only open some types of files by restricting what files types can be shown in the dialog. For a FileDialog you first type in the label you want to be seen down the bottom under Files of Type.  Then we put a | sign, then in the same string you put all the file types to allow in the following format:&lt;/p&gt;&lt;p&gt;*.filetype;*.filetype'&lt;/p&gt;&lt;p&gt;Leaving the defaultDir blank will mean it will resort to the default window&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Line 28-38: &lt;/span&gt;Here we put all of the rest of our method to get the picture. Notice that we put it all in the IF that checks if the user pressed OK. We do this becuase if the used pressed another button apart from OK then they would not have selected a file and the rest of the program would bug. &lt;/p&gt;&lt;p&gt;The first thing we do here is check if there is an image on the panel already, if there is we need to destroy it to make way for the new image we will be putting in. Remember at the start we set that variable to zero? Well now it becomes useful becuase the If asks if there is self.img. If a variable is zero then is has a boolen value of false so this IF is not executed and we get no errors about there being no image to destroy. &lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Line 31:&lt;/span&gt;Now we grab the path of the file that the user selected in the filedialog. We do this by going filedialog.GetPath(). This gives a string of the position of the file.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Line 32:&lt;/span&gt;What we are doing is converting the picture into a wx.Bitmap that the method wx.StaticBitmap will be able to process.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Line 33:&lt;/span&gt;Here we make out image and set it to the panel. Here is the syntax for wx.StaticBitmap. Note that the parent is where the picture will be placed upon. &lt;/p&gt;&lt;p&gt;The label is where you put the wx.Bitmap that we made earlier.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;wxStaticBitmap&lt;/p&gt;&lt;p&gt;&lt;b&gt;wxStaticBitmap&lt;/b&gt;(&lt;i&gt;parent&lt;/i&gt;,&lt;i&gt; id&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;label&lt;/i&gt;,&lt;b&gt; &lt;/b&gt;&lt;i&gt;pos&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt; =  wxDefaultPosition&lt;/i&gt;, &lt;i&gt;size = wxDefaultSize&lt;/i&gt;,&lt;i&gt;style = 0&lt;/i&gt;, &lt;b&gt; &lt;/b&gt;&lt;i&gt;name =  "staticBitmap"&lt;/i&gt;)&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Line 35-38:&lt;/span&gt;This bit resizes the frame to the size of the picture so the full thing gets shown. First we collect the size of the image we just loaded, then i added a bit to each of the x and y values so it would fit nicely and finally we set the size of the frame to (x,y) that i just made.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;The rest:&lt;/span&gt; Just the norm to start the program off.&lt;/p&gt;&lt;p&gt;RESULT&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VKqTWwZH05I/SHmF_z6YQAI/AAAAAAAAADk/QhB6PCqMHC0/s1600-h/res.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_VKqTWwZH05I/SHmF_z6YQAI/AAAAAAAAADk/QhB6PCqMHC0/s320/res.bmp" alt="" id="BLOGGER_PHOTO_ID_5222352574226120706" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;VIDEO--(probably by the end o&lt;/p&gt; &lt;p&gt;f the month)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-7531262950055361651?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/07/wxpython-tutorial-part-6.html</link><author>noreply@blogger.com (paulthom12345)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_VKqTWwZH05I/SHmA1pgvzkI/AAAAAAAAADc/Z2VI1iNtv7c/s72-c/filed.bmp" height="72" width="72" /><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-4226413426753492652</guid><pubDate>Sat, 28 Jun 2008 00:25:00 +0000</pubDate><atom:updated>2008-07-07T18:52:22.315-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">5</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial Part 5</title><description>Well so far we have covered frames, buttons, dialogs and sizers. Today we will delve into menus. Menus are a really pivotal part to a good looking wxPython program so learning how to use them is a really good idea. We will also start to lean about panels and what they can help us do in wxPython.&lt;br /&gt;&lt;br /&gt;Oh i just have a little note, when i do the line by line explaination down the bottom line 1 in the first line of code and line 3 would be the third line of actuall code, i dont count the lines with nothing on them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Part5&lt;br /&gt;&lt;/span&gt;Menus and Panels&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To start this one off we need to grab the code that we made in the last tutorial as this is what we are going to add to today, no need to make a whole new program. &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="mycode"&gt;&lt;span&gt;import wx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class MainFrame(wx.Frame):&lt;br /&gt;def __init__(self):&lt;br /&gt;   #Start the frame&lt;br /&gt;   wx.Frame.__init__(self,None,wx.ID_ANY,title='hello world')&lt;br /&gt;   #Declare Sizers&lt;br /&gt;   self.hbox = wx.BoxSizer()&lt;br /&gt;   self.vbox= wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;   #TextCtrl&lt;br /&gt;   self.text = wx.TextCtrl(self)&lt;br /&gt;   self.retext = wx.TextCtrl(self,style = wx.TE_READONLY|wx.TE_MULTILINE)&lt;br /&gt;   #Button&lt;br /&gt;   self.buthello = wx.Button(self,wx.ID_ANY,label = 'Transfer')&lt;br /&gt;   #Setting up the sizers&lt;br /&gt;   self.hbox.Add(self.text,proportion = 1,border=0)&lt;br /&gt;   self.hbox.Add(self.buthello,proportion =0,border=0)&lt;br /&gt;   self.vbox.Add(self.hbox,proportion = 0,border=0,flag = wx.EXPAND)&lt;br /&gt;   self.vbox.Add(self.retext,proportion=1,border=0,flag = wx.EXPAND)&lt;br /&gt;   self.SetSizer(self.vbox)&lt;br /&gt;   self.Show()&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;app = wx.App(redirect=False)&lt;br /&gt;frame = MainFrame()&lt;br /&gt;app.MainLoop()&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Okay so thats where we left off at the end of the last tutorial. We had a large text control and a smaller one and a button. One problem was that nothing happend when you clicked or types things in. So as well as adding a menu we will make an event handler to go with the program.&lt;br /&gt;&lt;br /&gt;Our aim is to change the program so that when you type in the top text control and press enter or the transfer button the value is added to the bottom text control. The next thing we want to be able to do is to make the menu have 2 sub menus, File and Help. In file we will have an exit command and in help we will add a help message dialog to appear when you press help.&lt;br /&gt;&lt;br /&gt;CODE&lt;br /&gt;&lt;div class="mycode"&gt;import wx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class MainFrame(wx.Frame):&lt;br /&gt; def __init__(self):&lt;br /&gt;     #Start the frame&lt;br /&gt;     wx.Frame.__init__(self,None,wx.ID_ANY,title='hello world')&lt;br /&gt;     #Declare Sizers&lt;br /&gt;     self.hbox = wx.BoxSizer()&lt;br /&gt;     self.vbox= wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;     #TextCtrl&lt;br /&gt;     self.menu = wx.MenuBar()&lt;br /&gt;     self.file = wx.Menu()&lt;br /&gt;     self.help = wx.Menu()&lt;br /&gt;     self.SetMenuBar(self.menu)&lt;br /&gt;&lt;br /&gt;     self.menu.Append(self.file,'&amp;amp;File')&lt;br /&gt;     self.exititem = self.file.Append(wx.ID_ANY,'E&amp;amp;xit')&lt;br /&gt;     self.Bind(wx.EVT_MENU,self.exitevent,self.exititem)&lt;br /&gt;&lt;br /&gt;     self.menu.Append(self.help,'&amp;amp;Help')&lt;br /&gt;     self.helpitem = self.help.Append(wx.ID_ANY,'&amp;amp;Help')&lt;br /&gt;     self.Bind(wx.EVT_MENU,self.helpevent,self.helpitem)&lt;br /&gt;&lt;br /&gt;     self.background = wx.Panel(self)&lt;br /&gt;     self.text = wx.TextCtrl(self.background,style=wx.PROCESS_ENTER)&lt;br /&gt;     self.text.Bind(wx.EVT_TEXT_ENTER,self.transevent)&lt;br /&gt;     self.retext = wx.TextCtrl(self.background,style = wx.TE_READONLY|wx.TE_MULTILINE)&lt;br /&gt;     #Button&lt;br /&gt;     self.buthello = wx.Button(self.background,wx.ID_ANY,label = 'Transfer')&lt;br /&gt;     self.buthello.Bind(wx.EVT_LEFT_DOWN,self.transevent)&lt;br /&gt;     #Setting up the sizers&lt;br /&gt; &lt;br /&gt;     self.hbox.Add(self.text,proportion = 1,border=0)&lt;br /&gt;     self.hbox.Add(self.buthello,proportion =0,border=0)&lt;br /&gt; &lt;br /&gt;     self.vbox.Add(self.hbox,proportion = 0,flag = wx.EXPAND,border=0)&lt;br /&gt;     self.vbox.Add(self.retext,proportion=1,flag = wx.EXPAND,border=0)&lt;br /&gt; &lt;br /&gt;     self.background.SetSizer(self.vbox)&lt;br /&gt;     self.Show()&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt; def helpevent(self,event):&lt;br /&gt;     msg = 'Insert help here'&lt;br /&gt;     msgbox = wx.MessageDialog(self.background,message=msg,style=wx.OK)&lt;br /&gt;&lt;br /&gt;     if msgbox.ShowModal() == wx.ID_OK:&lt;br /&gt;         msgbox.Destroy()&lt;br /&gt;&lt;br /&gt; def exitevent(self,event):&lt;br /&gt;     self.Destroy()&lt;br /&gt;&lt;br /&gt; def transevent(self,event):&lt;br /&gt;     data = self.text.GetValue()&lt;br /&gt;     redata = self.retext.GetValue()&lt;br /&gt;     self.retext.SetValue(redata+'\n'+data)&lt;br /&gt;     self.text.SetValue('')&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;app = wx.App(redirect=False)&lt;br /&gt;frame = MainFrame()&lt;br /&gt;app.MainLoop()&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;LINE BY LINE&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Line1: &lt;/span&gt;Add the wx libaries as usual&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 10:&lt;/span&gt;Welcome to menus, to start a menu we need to make a bar for all the menus to go on, without this the whole thing would be unusable. We dont need any arguments for this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 11,12:&lt;/span&gt;Now we make some menu objects. Making menufile and menuhelp means pretty much nothing yet becuase they have menubar to go on and no items in them, all we do is make menu objects so that we can manipulate them later.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 13:&lt;/span&gt;Here we tell the frame what its menubar is, in this case it is the one we created 3 lines ago.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 14:&lt;/span&gt;What we are doing here is adding the menu objects we created before to the actual menubar. We also give them ID's and titles. Titles for menus got me very confused when i started becuase i couldn't understand what the '&amp;amp;' sign did. What these mean is that the next character gets turned into a shortcut to access that menu object. To give an example press alt and the f while alt is still held. Your file menu should open in your webbrowser. That is what we are doing here, in out program if we press alt then F the file menu will open, cool huh!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 15:&lt;/span&gt;Here we add an item to the file menu, note that we still make an instance of appending the menu. The reason we do that is so we can bind the instance to an event. The only arguments you need for that line are the ID of the menu as well as the title.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 16:&lt;/span&gt;Now we have to bind the menu item to an event. Normally we would do it in the style:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;self.item.Bind(event,method)&lt;/li&gt;&lt;/ul&gt;But for menus its a bit different;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;self.Bind(event,method,menuinstance)&lt;/li&gt;&lt;/ul&gt;This is why we need to make an instance when appending to a menu, so we can bind it properly. Note that for menus you use wx.EVT_MENU rather than wx.EVT_LEFT_DOWN.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Line 17-19:&lt;/span&gt;Here we just do the same except for the other menu&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Line 20: &lt;/span&gt;Okay, what is declared on line 20 is a panel. Panels are really useful for organising things in your program. To re-use a metaphor imagine that there is a big table, this is the whole frame. Then panels are almost sub-frames. They are like laying a small tablemat on that table, you can then put things on the tablemat and move it around all you like, without worrying about the actual table. These are really useful when you are using sizers and need to set out things nicely. There are other advantages to Panels you will find with just using them. Any way, back to the actual line. For a wx.Panel the only argument you need is the Parent, in this case the frame. i.e. Self.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 24-38: &lt;/span&gt;This is what we did last time. Note how we applied the objects to self.background rather than just self. This is becuase we want them to appear on the panel. The rest is still the same from last time. Oh and also, for the object self.text we added style=wx.PROCESS_ENTER. This means you can bind it to events using the wx.EVT_TEXT_ENTER. If we didnt have the process enter, the program would not process it and therefore the action would not be taken when you hit enter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method - &lt;span style="font-style: italic;"&gt;Transend&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;(self,event)&lt;/span&gt;&lt;/span&gt;: What we are doing in this method is getting the current value of the readonly textctrl and then adding what the user has typed in the other textctrl (you must remember to have self and event in the arguments if a method is used in an event handler). Then the program wipes all the characters from self.text which is the textctrl you can write in.&lt;br /&gt;What we do to start this off is get the value of self.text (the one you write in) and then in one line we set the value of the readonly textctrl by using SetValue(). Then by using self.textin.GetValue() + data + '\n'. That gets the current value of the textctrl and then adds on the data and then goes to a new line.&lt;br /&gt;&lt;br /&gt;Finally we set the value self.text as nothing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method -&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Helpevent(self,event)&lt;/span&gt;&lt;/span&gt;:In this one we simply create a textbox using stuff we have learnt before, you can then replace the message with an appropriate text message.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method - &lt;span style="font-style: italic;"&gt;Exitevent(self,event)&lt;/span&gt;:&lt;/span&gt;This just closes the program with self.Destroy(). This (as the name suggests) destroys the frame and then the app.MainLoop() stops due to having no frames or anything going on. If you want to explicitly tell the app.MainLoop() to die you can destroy app by going app.Destroy()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The rest:&lt;/span&gt;Just the usual stuff to start the program off.&lt;br /&gt;&lt;br /&gt;VIDEO&lt;br /&gt;PART1&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/wHZl9tLCPxc&amp;fmt=18"&gt;  &lt;embed src="http://www.youtube.com/v/wHZl9tLCPxc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;PART2&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/1I1nhgQ3XF4&amp;fmt=18"&gt;  &lt;embed src="http://www.youtube.com/v/1I1nhgQ3XF4" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-4226413426753492652?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/wxpython-tutorial-part-5.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-2371892499545812437</guid><pubDate>Thu, 26 Jun 2008 08:31:00 +0000</pubDate><atom:updated>2008-08-12T02:01:37.723-07:00</atom:updated><title>Useful Links for Python</title><description>I thought i might get a list of really useful Python links like forums to go to, tutorials to read, modules to download and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IDE's&lt;/span&gt; that are good fun.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tutorials&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;You can't go past &lt;span style="font-size:100%;"&gt;Guido van &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Rossum's&lt;/span&gt; Python tutorial. Written by the man who made python, the address is:-&lt;a href="http://docs.python.org/tut/tut.html"&gt;http://docs.python.org/tut/tut.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;This is another good tutorial for the non programmer. This gets a new programmer up and running in minutes.&lt;a href="http://hetland.org/writing/instant-hacking.html"&gt; http://hetland.org/writing/instant-hacking.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;This is quite a good tutorial as well. It shows a lot of pictures which can be really nice if you like to learn that way. &lt;a href="http://hkn.eecs.berkeley.edu/%7Edyoo/python/idle_intro/index.html"&gt;http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Forums&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;There is a python forum i think is much better then the rest of them, there are really &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;experienced&lt;/span&gt; people and they are willing to give their time to help you. The place &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;I'm&lt;/span&gt; talking about is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;DaniWeb&lt;/span&gt;. My favourite forum. Address: &lt;a href="http://www.daniweb.com/forums/forum114.html"&gt;www.DaniWeb.com/forums/forum114.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;There is another forum that is alright but not quite as good as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;daniweb&lt;/span&gt;. It's called Python Forum.org. Its Address is: &lt;a href="http://python-forum.org/"&gt;http://python-forum.org&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Modules&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wxPython&lt;/span&gt;. I really can't go past this one can i? I mean i have been praising its name and for a good reason too. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;wxPython&lt;/span&gt; is an awesome GUI. Download is available from here:&lt;a href="http://www.blogger.com/www.wxpython.org"&gt;&lt;span class="a"&gt;www.&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;wxpython&lt;/span&gt;&lt;/b&gt;.org.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="a"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Pygame&lt;/span&gt;. This is a fairly good GUI module and is mainly used for (as the name suggests) games. If you are mainly into making games this might be worth a look. It can be downloaded from here:&lt;a href="http://www.blogger.com/www.pygame.org"&gt; &lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/www.pygame.org"&gt;&lt;span class="a"&gt;www.&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;pygame&lt;/span&gt;&lt;/b&gt;.org&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;IDE's&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;IDLE. This is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;IDE&lt;/span&gt; that comes with python so you should already have it installed on your computer. This is a great and simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;IDE&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;PyScripter&lt;/span&gt;. This &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;IDE&lt;/span&gt; is really good. It works really nicely and also has really good support for debugging, i would &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;recommend&lt;/span&gt; this to all people. Address:&lt;a href="http://mmm-experts.com/Products.aspx?ProductId=4"&gt;http://mmm-experts.com/Products.aspx?ProductId=4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;DrPython&lt;/span&gt;. This one is pretty good. It has support for more languages than just python. It has useful tools that will help you program. Address:&lt;a href="http://drpython.sourceforge.net/index.php"&gt;http://drpython.sourceforge.net/index.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Now usually i don't like things that you have to pay for as &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;I'm&lt;/span&gt; sure many of you would understand. With the amount of good free software out there who needs to pay? Well there is one python &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;IDE&lt;/span&gt; that i think is actually worth it. &lt;span style="font-size:100%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Wingware's&lt;/span&gt; Python &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;IDE&lt;/span&gt; is great. It makes it a charm programming and increases your productivity with all the features that help you along. If you want to check it out i believe it is constantly hanging around as an ad or you can go to:&lt;a href="http://www.wingware.com/"&gt;http://www.wingware.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Extra Downloads&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;At the moment there is only one thing i can think of that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;every&lt;/span&gt; python programmer should download that does not fit into any of the other categories. The thing &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_23"&gt;I'm&lt;/span&gt; talking about is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Py&lt;/span&gt;2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Exe&lt;/span&gt;. This is a great program that does exactly what the name suggests, it makes python programs into executable files for use on any computer. You can download it from the following website:&lt;a href="http://www.py2exe.org/"&gt; http://www.py2exe.org/&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Well &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;that's&lt;/span&gt; it for now but if i come across anything new that strikes my fancy don't be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_27"&gt;surprised&lt;/span&gt; if this is updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-2371892499545812437?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/useful-links-for-python.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-261827893255448734</guid><pubDate>Thu, 26 Jun 2008 00:04:00 +0000</pubDate><atom:updated>2008-07-12T20:50:46.446-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">4</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">OOP</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial Part4</title><description>Okay welcome to part 4 of my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wxPython&lt;/span&gt; tutorial. Today we will learn how to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;sizers&lt;/span&gt; as well as a bit more on text control&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Part4&lt;br /&gt;&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Sizers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Okay we will start by just making a frame with 2 text controls and a button, no event handling yet. Then we will make it so when you expand the frame everything stays in proportion&lt;span style="font-style: italic;"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Sizers&lt;/span&gt; are a really &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;important&lt;/span&gt; tool in any &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;wxPython&lt;/span&gt; program so getting to know how to use them is a must.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;CODE&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="mycode"&gt;&lt;br /&gt;&lt;br /&gt;import wx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class MainFrame(wx.Frame):&lt;br /&gt; def __init__(self):&lt;br /&gt;     #Start the frame&lt;br /&gt;     wx.Frame.__init__(self,None,wx.ID_ANY,title='hello world')&lt;br /&gt;     #Declare Sizers&lt;br /&gt;     self.hbox = wx.BoxSizer()&lt;br /&gt;     self.vbox= wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;     #TextCtrl&lt;br /&gt;     self.text = wx.TextCtrl(self)&lt;br /&gt;     self.retext = wx.TextCtrl(self,style = wx.TE_READONLY|wx.TE_MULTILINE)&lt;br /&gt;     #Button&lt;br /&gt;     self.buthello = wx.Button(self,wx.ID_ANY,label = 'Transfer')&lt;br /&gt;     #Setting up the sizers&lt;br /&gt;     self.hbox.Add(self.text,proportion = 1,border=0)&lt;br /&gt;     self.hbox.Add(self.buthello,proportion =0,border=0)&lt;br /&gt;     self.vbox.Add(self.hbox,proportion = 0,border=0,flag = wx.EXPAND)&lt;br /&gt;     self.vbox.Add(self.retext,proportion=1,border=0,flag = wx.EXPAND)&lt;br /&gt;     self.SetSizer(self.vbox)&lt;br /&gt;     self.Show()&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;app = wx.App(redirect=False)&lt;br /&gt;frame = MainFrame()&lt;br /&gt;app.MainLoop()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;LINE BY LINE&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Line&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;We start as always import &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wxPython&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;libraries&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 2:&lt;/span&gt;We make a class '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MainFrame&lt;/span&gt;'. We then put &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;wx&lt;/span&gt;.Frame in the brackets. You will know what this does if you have watched the previous tutorial but to run through it again, putting something in the brackets means the class will &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;inherit&lt;/span&gt; all its attributes. So in this case once we initialise &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;wx&lt;/span&gt;.Frame, the class &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;MainFrame&lt;/span&gt; will have all the attributes of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;wx&lt;/span&gt;.Frame. This is really useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 3-5:&lt;/span&gt;In this we start by defining what will happen when the class is initialised. Then we keep going to say 'wx.Frame.__init__(self,None,wx.ID_ANY,title="hello world")' this runs the initialisation program of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;wx&lt;/span&gt;.Frame. Now the class &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;MainFrame&lt;/span&gt; has all the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;attributes&lt;/span&gt; of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;wx&lt;/span&gt;.Frame.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 6-8:&lt;/span&gt;Here is where we set up the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;sizers&lt;/span&gt;. We make one sizer horizontal (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;sizers&lt;/span&gt; default to horizontal) and then we make another sizer vertical by putting &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;wx&lt;/span&gt;.VERTICAL in the brackets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 9-11:&lt;/span&gt;Here we set some text controls. We do this with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;wx&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;TextCtrl&lt;/span&gt;, the only argument you &lt;span style="font-style: italic;"&gt;need &lt;/span&gt;is the parent. The rest are keyword arguments. In the first one we just set the parent as self. Remember self is '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;MainFrame&lt;/span&gt;'. But since '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;MainFrame&lt;/span&gt;' has all the attributes of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;wx&lt;/span&gt;.Frame means you are putting your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;textctrl&lt;/span&gt; on a frame.&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_27"&gt;second&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;TextCtrl&lt;/span&gt; has some different features from the first namely style. Style adds attributes to something so with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;wx&lt;/span&gt;.TE_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;MULTILINE&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;wx&lt;/span&gt;.TE_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;READONLY&lt;/span&gt; we make the text control multi line and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;readonly&lt;/span&gt;. Note the TE after the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;wx&lt;/span&gt;., this means that it is a text only method. So you can't use these styles on buttons or something of the like.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 12-13:&lt;/span&gt;Here we just make your average button.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line 14-19:&lt;/span&gt;Well now we have all out components of our program we need to put the in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;sizers&lt;/span&gt;. We do this with the sizer.Add function. There are 4 arguments that can go in the brackets. Those&lt;br /&gt;are window, proportion, flag and border. The window is what you want to go into the sizer. The proportion is a funny one. If proportion =0 then the window will take up as little room as possible but if you have several things in a sizer one thing might have a proportion of 1, another of 4. This would mean that the window with proportion of 1 got 1/5&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;th&lt;/span&gt; of the space while the other window would take the rest of the space.&lt;br /&gt;&lt;br /&gt;Borders are easy. The number is how many pixels there is a border around it.&lt;br /&gt;&lt;br /&gt;Flags are really pivotal to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;sizers&lt;/span&gt; if you want to use their full capacity. A flag tells the sizer what to do when there is space space after somebody &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_38"&gt;re sized&lt;/span&gt; the screen or something. A flag of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;wx&lt;/span&gt;.EXPAND will make the sizer and everything inside it to expand to fit into the new space.&lt;br /&gt;&lt;br /&gt;Here is a full list of flags:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;These flags are different. These tell the sizer &lt;/span&gt;which side the border will be on&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;wx&lt;/span&gt;.TOP&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;wx&lt;/span&gt;.BOTTOM&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;wx&lt;/span&gt;.LEFT&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;wx&lt;/span&gt;.RIGHT&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;wx&lt;/span&gt;.ALL&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;This one is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_45"&gt;familiar&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;wx&lt;/span&gt;.EXPAND&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;This keeps the objects aspect ratio&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;wx&lt;/span&gt;.SHAPED&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;These are used to align the object&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;wx&lt;/span&gt;.ALIGN_CENTER&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;wx&lt;/span&gt;.ALIGN_LEFT&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;wx&lt;/span&gt;.ALIGN_RIGHT&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;wx&lt;/span&gt;.ALIGN_TOP&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;wx&lt;/span&gt;.ALIGN_BOTTOM&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;wx&lt;/span&gt;.ALIGN_CENTER_VERTICAL&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;wx&lt;/span&gt;.ALIGN_CENTER_HORIZONTAL&lt;/li&gt;&lt;/ul&gt;We now add the text control we can type in to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;hbox&lt;/span&gt;. This is a horizontal sizer remember. Also remember that which objects you put into the sizer first really matter. When i put the text control in to the sizer it slides it as far as it can to the left. A vertical sizer slides it as far as it can to the top. So anyway, we set the proportion to 1 &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_56"&gt;because&lt;/span&gt; we want this to use all the room possible. We then add the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;hellobutton&lt;/span&gt; to the sizer. This will be at the right of the screen when the frame is shown. We set the proportion to 0 so this uses up minimal space.&lt;br /&gt;&lt;br /&gt;Now we start using the vertical sizer. We start by adding the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_58"&gt;horizontal&lt;/span&gt; sizer to the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_59"&gt;vertical&lt;/span&gt; sizer with the flag &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;wx&lt;/span&gt;.EXPAND. This means of course that the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_61"&gt;horizontal&lt;/span&gt; sizer will expand to fill all room possible. We give this a proportion of zero &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_62"&gt;because&lt;/span&gt; we want out other text control to take most of the screen.&lt;br /&gt;&lt;br /&gt;Lastly we add the other text control and give it a flag and proportion of 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Line 19-20:&lt;/span&gt;&lt;/span&gt;H&lt;span&gt;er&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span&gt;we set the frame's sizer. This means that &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_63"&gt;everything&lt;/span&gt; applied in the sizer becomes applied to the frame. Then we set the frame to show by going 'self.Show()'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The rest:&lt;/span&gt;Standard stuff we do at the end of every &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;wxPython&lt;/span&gt; Program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VIDEO&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/CHE1TVclMKs"&gt;  &lt;embed src="http://www.youtube.com/v/CHE1TVclMKs" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-261827893255448734?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/wxpython-tutorial-part4.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-6360126956621047125</guid><pubDate>Wed, 25 Jun 2008 03:47:00 +0000</pubDate><atom:updated>2008-06-25T03:20:54.209-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">OOP</category><category domain="http://www.blogger.com/atom/ns#">Competition</category><title>Python Programming contest</title><description>Well this is for all the Aussie High School Kids out there who learn Python or are Interested in it. The National &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Computer&lt;/span&gt; Science School based in Sydney is running a web based contest where each week problems will be posted and you have the rest of the week to solve them and give your program to the judges.
&lt;br /&gt;
&lt;br /&gt;The fee is $11 but its not much for the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;amount&lt;/span&gt; you will be learning &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;I'm&lt;/span&gt; sure.  &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;I'm&lt;/span&gt; really looking forward to this so if anyone from Australia who is a High School Student is interested here are the details
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://challenge.ncss.edu.au/" target="_blank"&gt;&lt;img src="http://challenge.ncss.edu.au/images/ncss-logo.gif" alt="&gt;NCSS Challenge" border="0"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;When: Monday, July 28 for five weeks
&lt;br /&gt;Site: &lt;a href="http://challenge.ncss.edu.au/"&gt;http://challenge.ncss.edu.au/&lt;/a&gt;
&lt;br /&gt;Cost: $11 (inc. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;GST&lt;/span&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-6360126956621047125?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/python-programming-contest.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-2776998440029204704</guid><pubDate>Wed, 25 Jun 2008 02:33:00 +0000</pubDate><atom:updated>2008-06-25T21:07:42.486-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">OOP</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial Part3</title><description>kay so to sum up, you can now:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make a frame&lt;/li&gt;&lt;li&gt;Add a button&lt;/li&gt;&lt;/ol&gt;The way that we have set out our programs so far is not quite how your meant to though when doing more complex programs. Today i am going to make Frame with a button that when you press it a message appears. As well i am going to use classes to make my program&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Part3&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Classes, events and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MessageDialogs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;So how we have been working with up to this point has not really been the way that you program in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;wxPython&lt;/span&gt;&lt;/span&gt;. It is good for beginners but to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;wxPython&lt;/span&gt;&lt;/span&gt; well and have a good layout you need to learn how to use classes.&lt;br /&gt;&lt;br /&gt;Also a major thing that needs to be learnt is event handling. You want something to happen when you press buttons right? Well &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;that's&lt;/span&gt;&lt;/span&gt; why you need event handling. It is used for anything pretty much involving clicking and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;intractability&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So this tutorial if making use of classes, events and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MessageDialogs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="mycode"&gt;&lt;br /&gt;&lt;br /&gt;import wx&lt;br /&gt;&lt;br /&gt;class MainFrame(wx.Frame):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        wx.Frame.__init__(self,None,wx.ID_ANY,title='hello world')&lt;br /&gt;        self.buthello = wx.Button(self,wx.ID_ANY,label = 'hello')&lt;br /&gt;        self.buthello.Bind(wx.EVT_LEFT_DOWN,self.helloevent)&lt;br /&gt;        self.Show()&lt;br /&gt;    def helloevent(self,event):&lt;br /&gt;        msg = 'hello'&lt;br /&gt;        msgbox = wx.MessageDialog(self,message = msg,style = wx.OK)&lt;br /&gt;        if msgbox.ShowModal() == wx.ID_OK:&lt;br /&gt;            msgbox.Destroy()&lt;br /&gt;&lt;br /&gt;app = wx.App(redirect=False)&lt;br /&gt;frame = MainFrame()&lt;br /&gt;app.MainLoop()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Okay for this one i &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;recommend&lt;/span&gt; watching the video to get the line by line &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;analysis&lt;/span&gt;. Sorry. The video covers anything i would normally write down. If i get time maybe i will update this to also have it in text as well as a video for all the poor people with &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;dial up&lt;/span&gt; (my sympathy to you guys).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/0x7twKt4lJs"&gt;  &lt;embed src="http://www.youtube.com/v/0x7twKt4lJs" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;That's&lt;/span&gt; it for now. Tune in later for more tutorials!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-2776998440029204704?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/wxpython-tutorial-part3.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-1222650571981286556</guid><pubDate>Tue, 24 Jun 2008 21:53:00 +0000</pubDate><atom:updated>2008-06-25T18:53:55.428-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">OOP</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial Part2</title><description>Today i will be showing you how to add a button to your frame that you made with the previous tutorial so make sure you have done the previous tutorial before you start this one.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;Part 2&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Lets get straight into it. To make a button we use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wx&lt;/span&gt;.Button. There are a few things we need to learn first, parents and children.&lt;br /&gt;&lt;br /&gt;In our program below out frame has NO parents because it is on its own, it is not encapsulated by anything while our button has frame as its parent. This is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;because&lt;/span&gt; it needs to fit inside frame.&lt;br /&gt;If we had the button without frame as a parent the program will not run &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;because&lt;/span&gt; a button needs a parent to be applied to.&lt;br /&gt;&lt;br /&gt;To have a metaphor you can think of parents and children as a table. The big table with nothing on it is the parent of everything. Then you decide to put a button on the table so what the button is 'sitting on' is its parent, the table. Then if we added a Panel to the big table. Then we added a button, but this time we put the button on top of the panel. This time the parent is not the big table. No the parent is the panel &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;because&lt;/span&gt; this is what the button is 'sitting on'.&lt;br /&gt;&lt;br /&gt;CODE&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VKqTWwZH05I/SGFwEFu62rI/AAAAAAAAAB0/J3V8urs_sCI/s1600-h/code.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_VKqTWwZH05I/SGFwEFu62rI/AAAAAAAAAB0/J3V8urs_sCI/s400/code.JPG" alt="" id="BLOGGER_PHOTO_ID_5215573059032505010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;LINE BY LINE&lt;/span&gt;&lt;br /&gt;Line 1: &lt;/span&gt;Import the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;wxPython&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;library&lt;/span&gt; for use in the program&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line2:&lt;/span&gt;We make the app instance, we need this with any &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wxPython&lt;/span&gt; program.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line3:&lt;/span&gt;We use the same frame from the last tutorial. The same settings still apply.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line4:&lt;/span&gt;This is where we make the button. In the brackets we first set the:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Parent&lt;/li&gt;&lt;li&gt;ID&lt;/li&gt;&lt;li&gt;Keywords (label, style, etc)&lt;/li&gt;&lt;/ol&gt;The label is what is shown on the button, in this case 'test'.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line5:&lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;Because&lt;/span&gt; the button is all part of the instance 'frame' we will not have to ever call it to be shown because it will be automatically shown when its parent is shown. It does not have to be its direct parent that is shown but as long as somewhere in its &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;ancestry&lt;/span&gt; a thing is shown then it will will set &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;everything&lt;/span&gt; from the ancestor onwards to show.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Line6&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;/span&gt;Set the program in motion&lt;br /&gt;&lt;br /&gt;RESULT&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VKqTWwZH05I/SGFzLBcytNI/AAAAAAAAAB8/_ThvZDXKD3A/s1600-h/result.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_VKqTWwZH05I/SGFzLBcytNI/AAAAAAAAAB8/_ThvZDXKD3A/s400/result.JPG" alt="" id="BLOGGER_PHOTO_ID_5215576476676699346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remember if you have any questions just comment below!&lt;br /&gt;&lt;br /&gt;VIDEO&lt;br /&gt;&lt;br /&gt;&lt;object width="621" height="515" class="BLOG_video_class" id="BLOG_video-61dd924063b6315e" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;
&lt;param name="bgcolor" value="#FFFFFF"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="flashvars" value="flvurl=http://v23.nonxt6.googlevideo.com/videoplayback?id%3D61dd924063b6315e%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332625838%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1C867423FA17AE3622EA300580D20FC744C9EF61.22728DB37B4352B21D219614F4F6E7D1181D6768%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D61dd924063b6315e%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dyq5OteGwKbT9_rS06zf0StXiNKo&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;
&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"
width="621" height="515" bgcolor="#FFFFFF"
flashvars="flvurl=http://v23.nonxt6.googlevideo.com/videoplayback?id%3D61dd924063b6315e%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332625838%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1C867423FA17AE3622EA300580D20FC744C9EF61.22728DB37B4352B21D219614F4F6E7D1181D6768%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D61dd924063b6315e%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dyq5OteGwKbT9_rS06zf0StXiNKo&amp;autoplay=0&amp;ps=blogger"
allowFullScreen="true" /&gt;&lt;/object&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-1222650571981286556?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><enclosure type="video/mp4" url="http://www.blogger.com/video-play.mp4?contentId=61dd924063b6315e&amp;type=video%2Fmp4" length="0" /><link>http://paulthom12345.blogspot.com/2008/06/wxpython-tutorial-part2.html</link><author>noreply@blogger.com (paulthom12345)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_VKqTWwZH05I/SGFwEFu62rI/AAAAAAAAAB0/J3V8urs_sCI/s72-c/code.JPG" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-7618361135818894782</guid><pubDate>Sun, 22 Jun 2008 10:01:00 +0000</pubDate><atom:updated>2008-06-25T18:54:46.855-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">wxPython</category><title>wxPython Tutorial</title><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Well i have seen quite a few &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wxPython&lt;/span&gt;&lt;/span&gt; tutorials while i have been learning it so i thought i would write a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;wxPython&lt;/span&gt;&lt;/span&gt; tutorial for beginners. This will go through things a bit slower than some of the other popular ones...&lt;br /&gt;&lt;br /&gt;Okay well to start off &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;wxPython&lt;/span&gt;&lt;/span&gt; is a GUI for python and it is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;debatably&lt;/span&gt;&lt;/span&gt; the best one out there. So first you need to download &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;wxPython&lt;/span&gt;&lt;/span&gt; if you &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;haven't&lt;/span&gt; already. If you &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;Google&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;wxPython&lt;/span&gt;&lt;/span&gt; you should get there straight away.&lt;br /&gt;&lt;br /&gt;Once &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wxPython&lt;/span&gt;&lt;/span&gt; is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;installed&lt;/span&gt; you can continue along with the rest of the tutorial. It will be updated at least weekly except for a few exceptions so enjoy!&lt;br /&gt;&lt;br /&gt;Oh finally if you have any questions just comment below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Part1&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;i&gt;Simple Frame&lt;br /&gt;&lt;/i&gt;In this tutorial we make a simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;wxPython&lt;/span&gt;&lt;/span&gt; program that shows a frame with a title.&lt;br /&gt;A frame in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;wxPython&lt;/span&gt;&lt;/span&gt; is pretty much a window that you can put things in.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;CODE&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/paulthom12345/SF4gl3OMOxI/AAAAAAAAABQ/4r1IeZobRDs/%5BUNSET%5D.jpg" style="max-width: 800px; width: 407px; height: 133px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;Line 1:&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;This imports &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;wxPython&lt;/span&gt;&lt;/span&gt; for use in the program.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Line 2:&lt;/b&gt; This makes an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;wx&lt;/span&gt;&lt;/span&gt;.App which is the central unit used to make your program run.&lt;br /&gt;Note that in the brackets redirect = False. This makes any errors go to the python interpreter rather than making a new window to put errors in.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Line 3:&lt;/b&gt;This creates out basic frame. First we set is Parent:None, we will worry about parents and children more later. Next it gives the frame its ID, a lot of people put -1 here but it is best to put &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;wx&lt;/span&gt;&lt;/span&gt;.ID_ANY for style reasons. After that we set where on screen the frame will appear, make sure to have this as a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;tuple&lt;/span&gt;&lt;/span&gt;. Finally we give it a title to go on the top.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Line 4:&lt;/b&gt;Set the frame to show. Make sure to do this otherwise nothing will happen&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Line 5:&lt;/b&gt;This sets the program in motion&lt;br /&gt;&lt;br /&gt;&lt;u&gt;RESULT&lt;/u&gt;&lt;br /&gt;&lt;i&gt;&lt;img src="http://lh6.ggpht.com/paulthom12345/SF4iqxRYgqI/AAAAAAAAABY/KmMjNJTFJ-8/%5BUNSET%5D.jpg" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;VIDEO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;object width="611" height="507" class="BLOG_video_class" id="BLOG_video-4e4b822d3a85be25" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;
&lt;param name="bgcolor" value="#FFFFFF"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="flashvars" value="flvurl=http://v1.nonxt4.googlevideo.com/videoplayback?id%3D4e4b822d3a85be25%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332625838%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D184A85FE3D242CF352733DEBC5FFEB3DD5FF1794.21079C264D21E17B6140A98B86A02BF855650EC8%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4e4b822d3a85be25%26offsetms%3D5000%26itag%3Dw160%26sigh%3DlzbbMUIqpI0i_TRIaHFc3xmoXW4&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;
&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"
width="611" height="507" bgcolor="#FFFFFF"
flashvars="flvurl=http://v1.nonxt4.googlevideo.com/videoplayback?id%3D4e4b822d3a85be25%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332625838%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D184A85FE3D242CF352733DEBC5FFEB3DD5FF1794.21079C264D21E17B6140A98B86A02BF855650EC8%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4e4b822d3a85be25%26offsetms%3D5000%26itag%3Dw160%26sigh%3DlzbbMUIqpI0i_TRIaHFc3xmoXW4&amp;autoplay=0&amp;ps=blogger"
allowFullScreen="true" /&gt;&lt;/object&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-7618361135818894782?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><enclosure type="video/mp4" url="http://www.blogger.com/video-play.mp4?contentId=4e4b822d3a85be25&amp;type=video%2Fmp4" length="0" /><link>http://paulthom12345.blogspot.com/2008/06/wxpython-tutorial.html</link><author>noreply@blogger.com (paulthom12345)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/paulthom12345/SF4gl3OMOxI/AAAAAAAAABQ/4r1IeZobRDs/s72-c/%5BUNSET%5D.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-6395905730313039631</guid><pubDate>Sat, 21 Jun 2008 23:42:00 +0000</pubDate><atom:updated>2008-06-25T03:27:56.350-07:00</atom:updated><title>WxPython</title><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Well recently i have just started learning a GUI interface for Python and wow it is really good. It was quite difficult to pick up but what i found really worked was when i just kept going. Programming from tutorials until i understood why i was typing in what the tutorial said. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.wxpython.org/images/test7.gif" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;an example program that tracks the mouse&lt;/em&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;strong&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;In one week i have gone from not having any &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;experience&lt;/span&gt; with GUI programming to happily playing around doing what i want. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;wxPython&lt;/span&gt; certainly seems better than any of the other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GUI's&lt;/span&gt; i have tried before such as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Tkinter&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PyGame&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;wxPython&lt;/span&gt; is really easy and fun to learn. If you have any doubts about trying &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wxPython&lt;/span&gt; just visit its &lt;a href="http://www.wxpython.org/quotes.php"&gt;quotes&lt;/a&gt; page and check out the one by Pythons creator&lt;/span&gt;, &lt;span style="font-weight: normal;font-family:sans-serif;" &gt; &lt;big&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Guido van &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Rossum&lt;/span&gt;&lt;/span&gt;:-&lt;/span&gt;&lt;/big&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;strong&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;big&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/span&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;b&gt;"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;wxPython&lt;/span&gt; is the best and most mature cross-platform GUI toolkit, given a  number of constraints.  The only reason &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;wxPython&lt;/span&gt; isn't the standard  Python GUI toolkit is that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Tkinter&lt;/span&gt; was there first."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/b&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;strong&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;em style="font-weight: normal;"&gt;&lt;strong&gt;Enough Said!&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;strong&gt;&lt;span style="font-family:sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-6395905730313039631?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/wxpython.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-1434866055414173900</guid><pubDate>Sat, 21 Jun 2008 04:15:00 +0000</pubDate><atom:updated>2008-06-25T15:04:12.578-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">OOP</category><title>Python</title><description>I have started to develop quite an interest in programming, especially Python. This &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;OOP&lt;/span&gt; programing language is a great way to learn programming as it quite high level and great for doing simple tasks easily.&lt;br /&gt;&lt;br /&gt;Although it doesn't have near the amount of power that C or C++ has it is really useful and easy to understand. Being coded in C, Python is not that quick as &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;processing&lt;/span&gt; but still good enough for any hobby programmer.&lt;br /&gt;&lt;br /&gt;Python has been used in such companies as &lt;a class="reference" href="http://www.python.org/about/success/rackspace"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Rackspace&lt;/span&gt;&lt;/a&gt;,        &lt;a class="reference" href="http://www.python.org/about/success/ilm"&gt;Industrial Light and Magic&lt;/a&gt;,        &lt;a class="reference" href="http://www.python.org/about/success/astra"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;AstraZeneca&lt;/span&gt;&lt;/a&gt;,        &lt;a class="reference" href="http://www.python.org/about/success/honeywell"&gt;Honeywell&lt;/a&gt;. I also really like its great community. There are forums such as &lt;a href="http://www.blogger.com/www.Daniweb.com/forums/forum114.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;DaniWeb&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.blogger.com/www.python-forum.org"&gt;Python-forum&lt;/a&gt; &lt;span class="a"&gt;.&lt;br /&gt;&lt;br /&gt;I have now been learning python for about 8 months and i have found it so &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;intuitive&lt;/span&gt; and great to pick up as a first programming language. Anyone thinking about programming for the first time should really give &lt;a href="http://www.python.org/"&gt;python&lt;/a&gt; a go.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-1434866055414173900?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/python.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5588482865109218843.post-2266431747011163988</guid><pubDate>Sat, 21 Jun 2008 03:36:00 +0000</pubDate><atom:updated>2008-06-20T23:08:53.826-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Computers</category><category domain="http://www.blogger.com/atom/ns#">download</category><category domain="http://www.blogger.com/atom/ns#">Firefox</category><title>Firefox Download Day</title><description>Well Firefox download day is over, finally and well it certainly looks like they have broken their goal of 5 million. The counter on the firefox download day website claims 14,523,138 downloads with over 220 thousand coming from australia . That means that one in one hundred people in Australia have firefox 3 downloaded onto their computer.&lt;br /&gt;&lt;br /&gt;It was certainly an ambitious task to break a world record though due to all the publicity and the hype that surrounded the latest firefox people seemed to really get on board. I have to say i am really enjoying Firefox 3 myself. I really like its new layout and the &lt;span style="font-style: italic;"&gt;Smart Bookmarks&lt;/span&gt; are quite handy too. I'm still a bit annoyed at the loading times though. On my compter it can take up to 30 seconds to start up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5588482865109218843-2266431747011163988?l=paulthom12345.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://paulthom12345.blogspot.com/2008/06/firefox-download-day.html</link><author>noreply@blogger.com (paulthom12345)</author><thr:total>0</thr:total></item></channel></rss>

