返回介绍

Basic Controls II in Mono Winforms

发布于 2025-02-22 22:19:49 字数 7938 浏览 0 评论 0 收藏 0

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. Its 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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文