標籤:open 對象 並且 滑鼠 更新 demo 迴圈 針對 形式
被老師要求,已經是不得不進行圖形介面的開發了,因為程式本體使用python寫的,所以自然第一次進行圖形介面開發就選擇了wxpython,wxpython是一款非常優秀的GUI圖形庫,寫起來也相對簡潔方便。
安裝時直接pip install wxpython即可。
demo程式以及其它官方相關檔案:https://extras.wxpython.org/wxPython4/extras/
官方文檔:https://docs.wxpython.org/wx.1moduleindex.html
下面進入正題:首先先是例行的hello world
import wxapp=wx.App()win = wx.Frame(None,-1,title = ‘Hello World‘)win.Show()app.MainLoop()
運行這段代碼,就會彈出如下視窗
首先是最重要的wx.App類,官方文檔如下:
大概意思整理一下即:每個使用wx的引用都必須有唯一的一個wx.App執行個體,並且所有的UI對象都要在wx.App的執行個體建立之後才能建立。wx.App的建立確保了所有和wxpython相關的gui平台以及其它內容都被完整初始化了。wx.App.MainLoop()則是另外一個重要的語句,該迴圈用來接收GUI事件(event)
其次是wx.Frame類:
Frame類就是我們平常看到的那種有標題框的介面框,裡面可以容納window類但不能放dialog和frame。建構函式如下
Frame(parent, id=ID_ANY, title="", pos=DefaultPosition,size=DefaultSize, style=DEFAULT_FRAME_STYLE, name=FrameNameStr)
parent用來指定父類,ID為一個整數,title中的內容會顯示到標題上,pos為初始位置,size為視窗大小(x,y),style有固定取值,name不要管。
style的常用取值如下:
wx.DEFAULT_FRAME_STYLE:預設取值,等於同時使用了wx.MINIMIZE_BOX|wx.MAXIMIZE_BOX|wx.RESIZE_BORDER|wx.SYSTEM_MENU|wx.CAPTION|wx.CLOSE_BOX|wx.CLIP_CHILDREN
wx.ICONIZE:初始以最小化形式出現
Frame的相關事件:
EVT_CLOSE:當一個Frame正在被關閉的時候發生該事件,可以使點擊紅叉叉或者是調用wx.Window.Close
EVT_ICONIZE:視窗最小化
EVT_MENU_OPEN:當一個菜單被開啟時
EVT_MENU_CLOSE:當一個菜單剛被關閉時
EVT_MENU_HIGHLIGHT:針對某一個菜單的高亮事件,self.Bind(wx.EVT_MENU_HIGHLIGHT, 動作函數, self.gg.GetMenuItems()[0]),需要監聽的是一個wx.MenuItem對象。
EVT_MENU_HIGHLIGHT_ALL:需要如下綁定self.Bind(wx.EVT_MENU_HIGHLIGHT_ALL, 動作函數, wx.MenuBar類),當滑鼠滑過任何一個菜單的時候就有響應,當EVT_MENU_HIGHLIGHT_ALL發生時無法響應EVT_MENU_HIGHLIGHT事件
主要介面:
CreateStatusBar(self, number=1, style=STB_DEFAULT_STYLE, id=0, name=StatusBarNameStr):
建立底端狀態列,number控制狀態列有幾欄,style參考wx.StatusBar中提到的style,返回建立的wx.StatusBar執行個體
CreateToolBar(self, style=TB_DEFAULT_STYLE, id=ID_ANY, name=ToolBarNameStr):
在左邊或頂部建立工具列,返回建立的wx.ToolBar執行個體
GetClientAreaOrigin , GetMenuBar,GetStatusBar,GetStatusBarPane,GetToolBar:
都是返回相關屬性或參數的。
PushStatusText(self,text,number=0):
向狀態列中添加文字,text為字串,number標記哪一個狀態列中
SetMenuBar(self, menuBar),SetStatusBar(self, statusBar),SetStatusBarPane(self, n),SetStatusText(self, text, number=0),SetStatusWidths(self, widths),SetStatusWidths(self, widths):
設定相關屬性或是將菜單狀態列等加入進來。
那麼關於wxpython第一部分就到這裡了。隨緣更新下一期
[學習記錄]面對wxpython的長跑(100米:wxpython安裝,相關檔案,wx.App,wx.Frame)