博主之前學習過python官方御用的tkinter,不過期間挺久了。今天來嘗試一點新東西,wxpython。python
wxPython是一個用於Python編程語言的跨平臺GUI工具包。它容許Python程序員簡單輕鬆地建立具備強大,高功能的圖形用戶界面的程序。它被實現爲一組Python擴展模塊,它們包含流行的wxWidgets跨平臺庫的GUI組件,該 庫是用C ++編寫的。程序員
像Python和wxWidgets同樣,wxPython是開源的,這意味着任何人均可以避免費使用它,而且任何人均可以查看和修改源代碼。任何人均可覺得項目提供修復或加強功能。編程
wxPython是一個跨平臺的工具包。因爲編程語言是Python,所以wxPython程序簡單, 易於編寫且易於理解。app
import wx # 導入wx包 app = wx.App() # 建立一個應用程序對象 frm = wx.Frame(None, title="Hello World") # 建立一個界面 frm.Show() # 顯示它 app.MainLoop() # 啓動一個時間循環
運行結果:框架
import wx class HelloFrame(wx.Frame): # 一個說Hello World的框架 def __init__(self, *args, **kw): # 確保調用父類的__init__ super(HelloFrame, self).__init__(*args, **kw) pnl = wx.Panel(self) # 在框架中建立一個面板 st = wx.StaticText(pnl, label="Hello World!") # 放一些加粗字體在面板上 font = st.GetFont() font.PointSize += 10 font = font.Bold() st.SetFont(font) sizer = wx.BoxSizer(wx.VERTICAL) # 並建立一個sizer來管理子窗口小部件的佈局 sizer.Add(st, wx.SizerFlags().Border(wx.TOP|wx.LEFT, 25)) pnl.SetSizer(sizer) self.makeMenuBar() # 建立一個菜單欄 self.CreateStatusBar() self.SetStatusText("Welcome to wxPython!") def makeMenuBar(self): """ 菜單欄由菜單組成,菜單由菜單項組成。 此方法構建一組菜單並綁定要調用的處理程序 選擇菜單項時。 """ fileMenu = wx.Menu() # 使用Hello和Exit項建立一個文件菜單 # 「\ t...」語法定義了一個也觸發的加速鍵 # 同一事件 helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item") fileMenu.AppendSeparator() # 使用庫存ID時,咱們不須要指定菜單項 # 標籤 exitItem = fileMenu.Append(wx.ID_EXIT) # 如今是關於項目的幫助菜單 helpMenu = wx.Menu() aboutItem = helpMenu.Append(wx.ID_ABOUT) # 製做菜單欄併爲其添加兩個菜單。'&'定義 # 下一個字母是菜單項的「助記符」。在 # 支持它的平臺那些字母加下劃線而且能夠 # 從鍵盤觸發。 menuBar = wx.MenuBar() menuBar.Append(fileMenu, "&File") menuBar.Append(helpMenu, "&Help") # Give the menu bar to the frame self.SetMenuBar(menuBar) # 最後,將處理函數與EVT_MENU事件關聯起來 # 每一個菜單項。這意味着當該菜單項是 # activated而後將調用相關的處理函數。 self.Bind(wx.EVT_MENU, self.OnHello, helloItem) self.Bind(wx.EVT_MENU, self.OnExit, exitItem) self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem) def OnExit(self, event): """關閉框架""" self.Close(True) def OnHello(self, event): wx.MessageBox("Hello again from wxPython") def OnAbout(self, event): wx.MessageBox("This is a wxPython Hello World sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION) if __name__ == '__main__': # 運行此模塊(未導入)而後建立應用程序, # frame,顯示它,而後啓動事件循環。 app = wx.App() frm = HelloFrame(None, title='Hello World 2') frm.Show() app.MainLoop()
運行結果:編程語言