Home  Contents

First steps in Mono Winforms

In this part of the IronPython Mono Winforms tutorial, we introduce some basic programs in Winforms programing library.

Simple

This is a simple Winforms application.

simple.py
#!/usr/bin/ipy import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Application, Form class IForm(Form): def __init__(self): self.Text = 'Simple' self.Width = 250 self.Height = 200 self.CenterToScreen() Application.Run(IForm())

This code example shows a small window on the screen.

 clr.AddReference("System.Windows.Forms")

We add reference for the Winforms library.

 class IForm(Form):

In Winforms, any window or a dialog is a Form. This control is a basic container, whose purpose is to display other child controls. Our class, IForm, inherits from a form. This way it becomes a form itself.

 self.Text = 'Simple'
 self.Width = 250
 self.Height = 200

Text, Width and Height are properties of a form. Changing these properties, we modify our form control. The first line displays text "Simple" in the titlebar of the form control. The other two lines set the size of the form to 250x200 px.

 self.CenterToScreen()

This method centers our application on the screen.

 Application.Run(IForm())

This line runs the example.


Simple
Figure: Simple

Icon

Mono means monkey in Spanish. If we do not provide an icon for our application, we have a head of a monkey by default. The next example shows, how to change this.

icon.py
#!/usr/bin/ipy import clr import sys clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form from System.Drawing import Icon class IForm(Form): def __init__(self): self.Text = 'Icon' self.Width = 250 self.Height = 200 try: self.Icon = Icon("web.ico") except Exception, e: print e.msg sys.exit(1) self.CenterToScreen() Application.Run(IForm())

The code example shows an icon in the upper left corner of the form. A form's icon is the picture that represents the form in the taskbar as well as the icon that is displayed for the control box of the form.

 clr.AddReference("System.Drawing")

The Icon object comes from System.Drawing module. So we have to add a reference.

 try:
     self.Icon = Icon("web.ico")
 except Exception, e:
     print e.msg
     sys.exit(1)  

It is a good practice to put all input output work between the try/except keywords. The web.ico file must be available in the current working directory. This is the directory from where we execute (ipy icon.py) our application.


Icon
Figure: Icon

Tooltips

A tooltip is a small rectangular pop-up window that displays a brief description of a control's purpose when the user rests the pointer on the control.

tooltips.py
#!/usr/bin/ipy import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form from System.Windows.Forms import Button, ToolTip from System.Drawing import Point, Size class IForm(Form): def __init__(self): self.Text = 'Tooltips' self.CenterToScreen() self.Size = Size(200, 150) tooltip = ToolTip() tooltip.SetToolTip(self, "This is a Form") button = Button() button.Parent = self button.Text = "Button" button.Location = Point(50, 70) tooltip.SetToolTip(button, "This is a Button") Application.Run(IForm())

Our code example creates a tooltip for two controls. The Button control and the Form control.

 tooltip = ToolTip()

Here we create the ToolTip control. This instance is used to provide tooltips for both controls.

 tooltip.SetToolTip(self, "This is a Form")

Here we set a tooltip for a form.

 tooltip.SetToolTip(button, "This is a Button")

And here for the button.

 button = Button()
 button.Parent = self
 button.Text = "Button"
 button.Location = Point(50, 70)

Notice the creation of the Button control. The Parent property determines the container, where the button will reside. The Text property is a label for the button. The Location property places the button on the form at x=30, y = 70 px coordinates.


Tooltips
Figure: Tooltips

Button

Our last code example shows a button control in action.

button.py
#!/usr/bin/ipy import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form, Button from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = 'Button' self.CenterToScreen() self.Size = Size(200, 150) btn = Button() btn.Parent = self btn.Text = "Quit" btn.Location = Point(50, 50) btn.Click += self.OnClick btn.MouseEnter += self.OnEnter def OnClick(self, sender, args): self.Close() def OnEnter(self, sender, args): print "button entered" Application.Run(IForm())

All GUI programming is event driven programming. In our example, we show a button control on a form container. The button will listen to two events. The Click and the MouseEnter events.

 btn.Click += self.OnClick

This code line plugs an event handler to the Click event. When we click on the button, the OnClick() method is called.

 btn.MouseEnter += self.OnEnter

When we enter the button area with the mouse pointer, the MouseEnter event is triggerd. In this case, our code calls the OnEnter() method.

 def OnClick(self, sender, args):
     self.Close()

The method closes the application.

 def OnEnter(self, sender, args):
     print "button entered"

When we enter the button control area with the mouse pointer, "button entered" text is displayed in the terminal.

This part of the IronPython Mono Winforms tutorial showed some introductory code examples to get you started with the Winforms programming library.