Home  Contents

Basic Controls in Mono Winforms

This part of the IronPython Mono Winforms programming tutorial will be about basic controls.

Winforms controls are basic building blocks of an application. Winforms has a wide range of various controls. Buttons, check boxes, trackbars, labels etc. Everything a programmer needs for his job. In this section of the tutorial, we will describe several useful controls.

Label Control

Label is a simple control for displaying text or images. It does not receive focus.

label.py
#!/usr/bin/ipy import sys import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form, Label from System.Drawing import Size, Point, Font text = """Meet you downstairs in the bar and heard Your rolled up sleeves and your skull t-shirt You say why did you do it with him today? And sniffed me out like I was tanqueray Cause you're my fella, my guy Hand me your stella and fly By the time I'm out the door You tear me down like roger moore I cheated myself Like I knew I would I told ya, I was trouble You know that I'm no good Upstairs in bed, with my ex boy He's in a place, but I cant get joy Thinking of you in the final throws, this is when my buzzer goes""" class IForm(Form): def __init__(self): self.Text = "You know I'm No Good" font = Font("Serif", 10) lyrics = Label() lyrics.Parent = self lyrics.Text = text lyrics.Font = font lyrics.Location = Point(10, 10) lyrics.Size = Size(290, 290) self.CenterToScreen() Application.Run(IForm())

In our example, we show some lyrics on the form.

 lyrics = Label()

Label control is created.

 text = """Meet you downstairs in the bar and heard 
           ... """

This is our text.

 font = Font("Serif", 10)
 ...
 lyrics.Font = font

The font of the text of the label is set to Serif, 10px.


Label
Figure: Label

CheckBox

CheckBox is a control that has two states. On and Off. It is a box with a label or an image. If the CheckBox is checked, it is represented by a tick in a box.A CheckBox can be used to show/hide splashscreen at startup, toggle visibility of a toolbar etc.

checkbox.py
#!/usr/bin/ipy import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form, CheckBox from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = "CheckBox" self.Size = Size(220, 170) cb = CheckBox() cb.Parent = self cb.Location = Point(30, 30) cb.Text = "Show Title" cb.Checked = True cb.CheckedChanged += self.OnChanged self.CenterToScreen() def OnChanged(self, sender, event): if sender.Checked: self.Text = "CheckBox" else: self.Text = "" Application.Run(IForm())

Our code example shows or hides the title of the window depending on it's state.

 cb = CheckBox()

CheckBox control is created.

 cb.Text = "Show Title"
 cb.Checked = True

When the application starts, we show the title. And we set the CheckBox control to checked state.

 cb.CheckedChanged += self.OnChanged

When we click on the CheckBox control, the CheckedChanged event is triggered.

 if sender.Checked:
     self.Text = "CheckBox"
 else:
     self.Text = ""

Here we toggle the title of the window.


CheckBox
Figure: CheckBox

TrackBar

TrackBar is a component that lets the user graphically select a value by sliding a knob within a bounded interval. Our example will show a volume control.

trackbar.py
#!/usr/bin/ipy import sys import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form, PictureBox from System.Windows.Forms import TrackBar, TickStyle from System.Drawing import Size, Point, Bitmap class IForm(Form): def __init__(self): self.Text = 'TrackBar' self.Size = Size(260, 190) tb = TrackBar() tb.Parent = self tb.Size = Size(150, 30) tb.Location = Point(30, 50) tb.TickStyle = TickStyle.None tb.SetRange(0, 100) tb.ValueChanged += self.OnChanged self.LoadImages() self.pb = PictureBox() self.pb.Parent = self self.pb.Location = Point(210, 50) self.pb.Image = self.mutep self.CenterToScreen() def LoadImages(self): try: self.mutep = Bitmap("mute.png") self.minp = Bitmap("min.png") self.medp = Bitmap("med.png") self.maxp = Bitmap("max.png") except Exception, e: print "Error reading images" print e.msg sys.exit(1) def OnChanged(self, sender, event): val = sender.Value if val == 0: self.pb.Image = self.mutep elif val > 0 and val <= 30: self.pb.Image = self.minp elif val > 30 and val < 80: self.pb.Image = self.medp else: self.pb.Image = self.maxp Application.Run(IForm())

In the code example, we show a TrackBar and a PictureBox. By dragging the track bar, we change the image on the PictureBox control.

 tb = TrackBar()

TrackBar control is created.

 tb.TickStyle = TickStyle.None

We show no ticks for this TrackBar.

 self.pb = PictureBox()
 ...
 self.pb.Image = self.mutep

PictureBox control is created. It is used to display an image. At the start, it shows the mute image.

 self.mutep = Bitmap("mute.png")
 self.minp = Bitmap("min.png")
 self.medp = Bitmap("med.png")
 self.maxp = Bitmap("max.png")

Here we create four images, that we will use.

 val = sender.Value

 if val == 0: 
     self.pb.Image = self.mutep
 elif val > 0 and val <= 30:
     self.pb.Image = self.minp
 elif val > 30 and val < 80:
     self.pb.Image = self.medp
 else: self.pb.Image = self.maxp

We determine the value of the TrackBar. Depending on its value, we update the PictureBox control.


TrackBar
Figure: TrackBar

ComboBox

ComboBox is a control that combines a button or editable field and a drop-down list. The user can select a value from the drop-down list, which appears at the user's request. If you make the combo box editable, then the combo box includes an editable field into which the user can type a value.

combobox.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 ComboBox, Label from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = "ComboBox" self.Size = Size(240, 240) cb = ComboBox() cb.Parent = self cb.Location = Point(50, 30) cb.Items.AddRange(("Ubuntu", "Mandriva", "Red Hat", "Fedora", "Gentoo")) cb.SelectionChangeCommitted += self.OnChanged self.label = Label() self.label.Location = Point(50, 140) self.label.Parent = self self.label.Text = "..." self.CenterToScreen() def OnChanged(self, sender, event): self.label.Text = sender.Text Application.Run(IForm())

Our code programming example shows a combobox with five items. The selected item is shown in a label control.

 cb = ComboBox()

ComboBox control is created.

 cb.Items.AddRange(("Ubuntu",
     "Mandriva",
     "Red Hat",
     "Fedora",
     "Gentoo"))

The ComboBox control is filled with items.

 cb.SelectionChangeCommitted += self.OnChanged

If we select an item from the combobox, the SelectionChangeCommitted event is triggered.

 def OnChanged(self, sender, event):
     self.label.Text = sender.Text

Here the selected text from the combobox is copied to the label.


ComboBox
Figure: ComboBox

We have finished chapter of the IronPython Mono Winforms tutorial, dedicated to basic controls.