Home  Contents

Basic Controls II in Mono Winforms

In this part of the IronPython Mono Winforms tutorial, we will continue introducing basic Mono Winforms controls.

RadioButton

The RadioButton control enables the user to select a single option from a group of choices when paired with other RadioButton controls. The GroupBox control is used to pair radio buttons together.

radiobutton.py
#!/usr/bin/ipy import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form, StatusBar from System.Windows.Forms import RadioButton, GroupBox from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = "RadioButton" self.Size = Size(240, 240) gb = GroupBox() gb.Text = "Sex" gb.Size = Size(120, 110) gb.Location = Point(20, 20) gb.Parent = self male = RadioButton() male.Text = "Male" male.Parent = gb male.Location = Point(10, 30) male.CheckedChanged += self.OnChanged female = RadioButton() female.Text = "Female" female.Parent = gb female.Location = Point(10, 60) female.CheckedChanged += self.OnChanged self.statusbar = StatusBar() self.statusbar.Parent = self self.CenterToScreen() def OnChanged(self, sender, event): if sender.Checked: self.statusbar.Text = sender.Text Application.Run(IForm())

In our example, we show two radio buttons in a group box. Only one option is selectable at a time. The option value is shown in the statusbar.

 gb = GroupBox()
 gb.Text = "Sex"

GroupBox control is used to group radio buttons together. This way we can choose only one radio button control at a time.

 male = RadioButton()
 male.Text = "Male"
 male.Parent = gb

RadioButton control with text "Male" is created. It's parent is the group box control.

 def OnChanged(self, sender, event):
     if sender.Checked:
         self.statusbar.Text = sender.Text

The OnChanged() method sets the text of the currently selected radio button to the statusbar control.


RadioButton
Figure: RadioButton

MonthCalendar

In the next example, we will show a MonthCalendar control. The MonthCalendar control allows the user to select a date using a visual display.

monthcalendar.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 Label, MonthCalendar from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = 'MonthCalendar' self.Size = Size(240, 240) calendar = MonthCalendar() calendar.Parent = self calendar.Location = Point(20, 20) calendar.DateSelected += self.OnSelected self.date = Label() self.date.Location = Point(30, 180) self.date.Parent = self dt = calendar.SelectionStart self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year) self.CenterToScreen() def OnSelected(self, sender, event): dt = sender.SelectionStart self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year) Application.Run(IForm())

In the example, we show a MonthCalendar and a Label.

  calendar = MonthCalendar()
  ...
  self.date = Label()

We have two controls. A MonthCalendar and a Label. The latter shows the currently selected date.

 def OnSelected(self, sender, event): 
     dt = sender.SelectionStart
     self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year)

When we select a date from the MonthCalendar, the OnSelected() method is called. The SelectionStart property gets the start date of the selected range of dates.


MonthCalendar
Figure: MonthCalendar

TextBox

The TextBox control is used to display or accept some text. The text can be single or multiline. This control is also capable of password masking.

textbox.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 Label, TextBox from System.Drawing import Size, Point class IForm(Form): def __init__(self): self.Text = 'TextBox' self.text = Label() self.text.Parent = self self.text.Text = "..." self.text.AutoSize = True self.text.Location = Point(60, 40) tbox = TextBox() tbox.Parent = self tbox.Location = Point(60, 100) tbox.KeyUp += self.OnKeyUp self.Size = Size(250, 200) self.CenterToScreen() def OnKeyUp(self, sender, event): self.text.Text = sender.Text Application.Run(IForm())

This example shows a text box and a label. The text that we key in the text box is displayed immediately in the label control.

 self.text = Label()
 ...
 self.text.AutoSize = True

The Label control is created. The AutoSize property ensures, that the Label grows to show the text.

 tbox = TextBox()
 ...
 tbox.KeyUp += self.OnKeyUp

We plug in the KeyUp event into the TextBox control. When we release the key, OnKeyUp() method is called.

 def OnKeyUp(self, sender, event): 
     self.text.Text = sender.Text

In the OnKeyUp() method we update the label control with the text from the text box control.


TextBox
Figure: TextBox

PictureBox

The PictureBox control is used for displaying a picture on the form.

picturebox.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.Drawing import Size, Point, Bitmap class IForm(Form): def __init__(self): self.Text = 'PictureBox' try: castle = Bitmap('redrock.png') except Exception, e: print 'Cannot read image file' print e.msg sys.exit(1) pb = PictureBox() pb.Parent = self pb.Size = Size(castle.Width, castle.Height) pb.Location = Point(2, 2) pb.Image = castle self.Size = Size(castle.Width, castle.Height) self.CenterToScreen() Application.Run(IForm())

The example shows a png image on the form.

 try:
     castle = Bitmap('redrock.png') 
 except Exception, e:
     print 'Cannot read image file'
     print e.msg
     sys.exit(1)      

We get a bitmap from the current working directory.

 pb = PictureBox()     

The PictureBox control is created.

 pb.Image = castle    

The Image property points to the bitmap, we have created.

 self.Size = Size(castle.Width, castle.Height)

The size of the form is equal to the size of the bitmap.


PictureBox
Figure: PictureBox

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