原文: http://zetcode.com/tutorials/ironpythontutorial/firststeps/

在 IronPython Mono Winforms 教程的这一部分中,我们介绍 Winforms 编程库中的一些基本程序。

简单

这是一个简单的 Winforms 应用。

simple.py

  1. #!/usr/bin/ipy
  2. import clr
  3. clr.AddReference("System.Windows.Forms")
  4. from System.Windows.Forms import Application, Form
  5. class IForm(Form):
  6. def __init__(self):
  7. self.Text = 'Simple'
  8. self.Width = 250
  9. self.Height = 200
  10. self.CenterToScreen()
  11. Application.Run(IForm())

此代码示例在屏幕上显示一个小窗口。

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

我们添加了 Winforms 库的引用。

  1. class IForm(Form):

在 Winforms 中,任何窗口或对话框都是Form。 该控件是一个基本容器,其目的是显示其他子控件。 我们的类IForm继承自表单。 这样,它本身就成为一种形式。

  1. self.Text = 'Simple'
  2. self.Width = 250
  3. self.Height = 200

TextWidthHeight是表单的属性。 更改这些属性,我们将修改表单控件。 第一行在表单控件的标题栏中显示文本"Simple"。 其他两行将表单的大小设置为250x200像素。

  1. self.CenterToScreen()

这种方法将我们的应用集中在屏幕上。

  1. Application.Run(IForm())

此行运行示例。

IronPython Mono Winforms 中的第一步 - 图1

图:简单

图标

Mono 在西班牙语中意为猴子。 如果我们不为应用提供图标,则默认情况下,我们的头是猴子。 下一个示例显示如何更改此设置。

icon.py

  1. #!/usr/bin/ipy
  2. import clr
  3. import sys
  4. clr.AddReference("System.Windows.Forms")
  5. clr.AddReference("System.Drawing")
  6. from System.Windows.Forms import Application, Form
  7. from System.Drawing import Icon
  8. class IForm(Form):
  9. def __init__(self):
  10. self.Text = 'Icon'
  11. self.Width = 250
  12. self.Height = 200
  13. try:
  14. self.Icon = Icon("web.ico")
  15. except Exception, e:
  16. print e.msg
  17. sys.exit(1)
  18. self.CenterToScreen()
  19. Application.Run(IForm())

该代码示例在窗体的左上角显示一个图标。 表单的图标是代表任务栏中表单的图片以及为表单的控制框显示的图标。

  1. clr.AddReference("System.Drawing")

Icon对象来自System.Drawing模块。 因此,我们必须添加引用。

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

最好将所有输入输出工作放在tryexcept关键字之间。 web.ico文件必须在当前工作目录中可用。 这是我们执行应用的目录(ipy icon.py)。

IronPython Mono Winforms 中的第一步 - 图2

图:图标

工具提示

工具提示是一个小的矩形弹出窗口,当用户将指针放在控件上时,它会显示控件目的的简短说明。

tooltips.py

  1. #!/usr/bin/ipy
  2. import clr
  3. clr.AddReference("System.Windows.Forms")
  4. clr.AddReference("System.Drawing")
  5. from System.Windows.Forms import Application, Form
  6. from System.Windows.Forms import Button, ToolTip
  7. from System.Drawing import Point, Size
  8. class IForm(Form):
  9. def __init__(self):
  10. self.Text = 'Tooltips'
  11. self.CenterToScreen()
  12. self.Size = Size(200, 150)
  13. tooltip = ToolTip()
  14. tooltip.SetToolTip(self, "This is a Form")
  15. button = Button()
  16. button.Parent = self
  17. button.Text = "Button"
  18. button.Location = Point(50, 70)
  19. tooltip.SetToolTip(button, "This is a Button")
  20. Application.Run(IForm())

我们的代码示例为两个控件创建一个工具提示。 Button控件和Form控件。

  1. tooltip = ToolTip()

在这里,我们创建ToolTip控件。 此实例用于为两个控件提供工具提示。

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

在这里,我们为表单设置工具提示。

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

这里是按钮。

  1. button = Button()
  2. button.Parent = self
  3. button.Text = "Button"
  4. button.Location = Point(50, 70)

注意Button控件的创建。 Parent属性确定按钮所在的容器。 Text属性是按钮的标签。 Location属性将按钮放在表单上的x = 30y = 70px坐标处。

IronPython Mono Winforms 中的第一步 - 图3

图:工具提示 s

按钮

我们的最后一个代码示例显示了一个有效的按钮控件。

button.py

  1. #!/usr/bin/ipy
  2. import clr
  3. clr.AddReference("System.Windows.Forms")
  4. clr.AddReference("System.Drawing")
  5. from System.Windows.Forms import Application, Form, Button
  6. from System.Drawing import Size, Point
  7. class IForm(Form):
  8. def __init__(self):
  9. self.Text = 'Button'
  10. self.CenterToScreen()
  11. self.Size = Size(200, 150)
  12. btn = Button()
  13. btn.Parent = self
  14. btn.Text = "Quit"
  15. btn.Location = Point(50, 50)
  16. btn.Click += self.OnClick
  17. btn.MouseEnter += self.OnEnter
  18. def OnClick(self, sender, args):
  19. self.Close()
  20. def OnEnter(self, sender, args):
  21. print "button entered"
  22. Application.Run(IForm())

所有 GUI 编程都是事件驱动的编程。 在我们的示例中,我们在表单容器上显示了一个按钮控件。 该按钮将收听两个事件:ClickMouseEnter事件。

  1. btn.Click += self.OnClick

此代码行将事件处理器插入Click事件。 当我们单击按钮时,将调用OnClick()方法。

  1. btn.MouseEnter += self.OnEnter

当我们使用鼠标指针进入按钮区域时,将触发MouseEnter事件。 在这种情况下,我们的代码将调用OnEnter()方法。

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

该方法关闭应用。

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

当我们使用鼠标指针进入按钮控制区域时,"button entered"文本将显示在终端中。

IronPython Mono Winforms 教程的这一部分显示了一些入门代码示例。