[學習記錄]面對wxpython的長跑(100米:wxpython安裝,相關檔案,wx.App,wx.Frame)

來源:互聯網
上載者:User

標籤: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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.