wxPython是wxWidgets(wxWindows)的Python版本.
wxWidgets是一個跨平台的視窗程式開發的library, 好處在於 :
- 開放原始碼
- 跨平台
- 大量的視窗元件可以使用
- 常用的功能也有函式庫支援
下面就以一個簡單的建立視窗的程式來講解一下wxPython建立視窗程式的運作.
# -*- coding: cp950 -*-程式第一行的
import wx
#建立視窗物件
class Frame(wx.Frame):
def __init__(self, parent, id, pos, title, size):
wx.Frame.__init__(self, parent, id, title, size)
#建立控制視窗的物件
class App(wx.App):
def OnInit(self):
self.frame = Frame(None, -1, wx.DefaultPosition,'視窗標題', (300,300))
self.frame.Show()
self.SetTopWindow(self.frame)
return True
#主程式
if __name__ == '__main__':
app = App()
app.MainLoop()
# -*- coding: cp950 -*-表示程式碼的編碼是用big5編碼, 如果沒有這一行註解裡面有中文會無法執行
程式用到的class
- Frame (繼承wx.Frame) : 建立一個視窗, __init__ 相當於C++裡面的constructor, 而self相當於傳入物件自己本身, 名字沒有限定要用self, 但是習慣上大家都是用self增加可讀性. __init__裡面呼叫Frame的parent的__init__ (constructor), 建立視窗.
- App : 利用Frame來產生視窗, 主要的控制都在App裡面完成, 包含設定視窗屬性, Event的控制等 等, 但是在這個簡單程式裡面沒有做Event的bind. 需要定義OnInit, OnInit會在產生App這個物件的Instance時被呼叫.
- 建立App的Instance
- 建立Instance時, App裡面的OnInit被呼叫. 在OnInit中建立並且Show出Frame (視窗).
- app.MainLoop() 等待事件產生
(注) tk也有人推薦, 但是功能好像比較沒有這麼完整(視窗元件), 好處是容易學習.
參考資料 :
wxPython In Action翻譯
The wxPython tutorial
Gary的Blog
沒有留言:
張貼留言