import wx #1 class App(wx.App):#2 def OnInit(self): #3 frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() #4 app.MainLoop() #5
上面的代碼的任何一行都不能少,不然將不能工做。這個基本的wxPython程序說明了開發任一wxPython程序所必須的五個基本步驟:app
導入必須的wxPython包
一旦你導入了wx模塊,你就可以建立你的應用程序(application)對象和框架(frame)對象。每一個wxPython程序必須有一個application對象和至少一個frame對象。application對象必須是wx.App的一個實例或你在OnInit()方法中定義的一個子類的一個實例。當你的應用程序啓動的時候,OnInit()方法將被wx.App父類調用。框架
子類化wxPython應用程序類wx.App
咱們一般在OnInit()方法中建立frame對象。上面的wx.Frame接受三個參數,僅第一個(parent=None)是必須的,其他的都有默認值。 調用Show()方法使frame可見,不然不可見。咱們能夠經過給Show()一個布爾值參數來設定frame的可見性函數
class App(wx.App): def __init__(self): wx.App.__init__(self)
若是你忘了這樣作,wxPython將不被初始化而且你的OnInit()方法也將得不到調用。oop
import wx class Frame(wx.Frame): #3 pass class App(wx.App): def OnInit(self): self.frame = Frame(parent=None, title='Spare') #4 self.frame.Show() self.frame.Center() self.SetTopWindow(self.frame) #5 return True if __name__ == '__main__': #6 app = App() app.MainLoop()
在OnInit()方法中,咱們調用了這個App類本身的SetTopWindow()方法,並傳遞給它咱們新建立的frame實例。咱們沒必要定義SetTopWindow()方法,由於它繼承自wx.App父類。SetTopWindow()方法是一個可選的方法,它讓wxPython方法知道哪一個框架或對話框將被認爲是主要的。一個wxPython程序能夠有幾個框架,其中有一個是被設計爲應用程序的頂級窗口的。測試
這個是Python中一般用來測試該模塊是做爲程序獨立運行仍是被另外一模塊所導入。咱們經過檢查該模塊的__name__屬性來實現
spa
import wx class Frame(wx.Frame): #2 wx.Frame子類 """Frame class that displays an image.""" def __init__(self, image, parent=None, id=-1, pos=wx.DefaultPosition, title='Hello, wxPython!'): #3圖像參數 """Create a Frame instance and display image.""" #4 顯示圖像 temp = image.ConvertToBitmap() #轉換爲位圖 size = temp.GetWidth(), temp.GetHeight() wx.Frame.__init__(self, parent, id, title, pos, size) self.bmp = wx.StaticBitmap(parent=self, bitmap=temp) class App(wx.App): #5 wx.App子類 """Application class.""" def OnInit(self): #6 圖像處理 image = wx.Image('back_image.jpg', wx.BITMAP_TYPE_JPEG) self.frame = Frame(image) self.frame.Show() self.SetTopWindow(self.frame) return True def main(): #7 app = App() app.MainLoop() if __name__ == '__main__': main()
#2 定義一個wx.Frame的子類,以便咱們更容量控制框架的內容和外觀。設計
#3 給咱們的框架的構造器增長一個圖像參數。這個值經過咱們的應用程序類在建立一個框架的實例時提供。一樣,咱們能夠傳遞必要的值給wx.Frame.__init__()code
#4 咱們將用wx.StaticBitmap控件來顯示這個圖像,它要求一個位圖。因此咱們轉換圖像到位圖。咱們也使用圖像的寬度和高度建立一個size元組。這個size元組被提供給wx.Frame.__init__()調用,以便於框架的尺寸匹配位圖尺寸。對象
#5 定義一個帶有OnInit()方法的wx.App的子類,這是wxPython應用程序最基本的要求。blog
#6 咱們使用與hello.py在同一目錄下的名爲wxPython.jpg的文件建立了一個圖像對象。
#7 main()函數建立一個應用程序的實例並啓動wxPython的事件循環。