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 會在程式結束時消失。
參考資料:
沒有留言:
張貼留言