IronPython(4) – 類別、繼承、模組化

基本上還是跟上次的一樣,只是我們要重新寫過,直接繼承 Form 類別,然後模組化。
Python 定義類別的方法相當簡單:

class classname( parentclass ):
  def __init__( self ):
    # initialize
  def doSomething( self ):
    # do something

他是以左邊的縮排來決定範圍,所以同樣縮排就表示是同一區塊。
self 則是表示自己,也就類似 c# 的 this。
所以我們把昨天的程式碼重新寫過:

import clr
clr.AddReferenceByPartialName(“System.Windows.Forms”)
clr.AddReferenceByPartialName(“System.Drawing”)
from System.Windows.Forms import *
from System.Drawing import *
class OptionForm( Form ):
  def __init__(self):
    self.InitializeComponent()
  def InitializeComponent(self):
    self.Text = “RSSMSN – customize your msn personal message”
    # Initialize Label
    lblHello = Label(Text=”Hello world!” )
    lblHello.Visible=True
    lblHello.Location=Point( 10, 10 )
    lblHello.AutoSize=True
    self.Controls.Add( lblHello )
    # Initialize NotifyIcon
    notifyIcon1 = NotifyIcon( Visible=True, Text=”RSSMSN”, Icon=Icon(“Matrix.ico”) )
    # Initialize Form
    self.StartPosition=FormStartPosition.CenterScreen

大致上就會是這樣子,我們將這個檔案命名為 fmOption.py。
主程式則另外放到 main.py:

import clr
clr.AddReferenceByPartialName(“System.Windows.Forms”)
clr.AddReferenceByPartialName(“System.Drawing”)
from System.Windows.Forms import *
from System.Drawing import *
from fmOption import *
f = OptionForm()
Application.Run(f)

你可以看到主程式變得簡單許多。這邊只需要將剛剛寫好的 fmOption.py 引用進來,再將 OptionForm 實體化,請 Application 類別去把窗開出來就好了。
Python 引用其他檔案的方法,統一都是 from your_module import classname。
這個 your_module 可以是 assembly name 也可以是 module name。
大致上就是這樣子了。
下次的目標是加上 destructor 以確保 System Tray 的 Icon 會在程式結束時消失。
參考資料: