[Python] wxPython 狀態列組件、訊息對話方塊組件 學習總結(原創),pythonwxpython

來源:互聯網
上載者:User

[Python] wxPython 狀態列組件、訊息對話方塊組件 學習總結(原創),pythonwxpython
 1、狀態列組件  1、基本介紹

      :

      

      紅框框內的就是狀態列。

      他可以分成若干個區塊,比如上者分為了兩個區塊,並且比例是固定的,建立時可以指定

      每個區塊都能夠顯示 資訊,一般通過 綁定事件 即時更新 各個區塊的內容

      因為狀態列本身 組件,所以除了能夠自己顯示簡訊,還能夠添加 其他組件,例如 進度條(常用)、按鈕、編輯框、等。

      目前學習並用到是這些,還有未提及的希望能夠在評論中告知,感謝。

  2、基本建立過程 (有兩種)      1、先建立一個 狀態列對象 然後添加到 視窗架構 中

        基本過程代碼如下:

        

        首先建立一個 狀態列對象(id = -1 表示 id 由系統自動隨機產生),然後設定了它的 :

        分區數 : 好像可以設定很多。必須大於 0 ,否則報錯

        分塊比例:參數是一個 元組, 分塊數是幾個,元組內元素就是幾個。

             [-n, -m],負數表示時,表示區塊為 n:m

             [n, m] , 整數表示時,區塊大小是個定值,第0個區塊長度為 n,第1個為 m,不會隨著 視窗框體的變化而變化。

        分塊內顯示的內容:一般到實事件中進行 設定, 其中兩個參數,第一個為 內容,第二個為 區塊索引(從0開始)

        最後把它添加到了 視窗框體中

      2、從 視窗框體 中執行個體化一個 狀態列對象並進行操作

        

        通過 接受 視窗框體.CreateStatusBar() 方法返回的 狀態列 對象來 控制 狀態列

        控制設定 過程一致

  3、其他      1、當不需要顯示 狀態列 時 可以調用 狀態列對象的 .Show() 方法進行設定

        

        參數為 :

        True 時為 顯示,

        False 時為 隱藏。

        一般比較少用到,但還是有必要知道的。

      2、添加一個 進度條 到狀態列組件中

        方法很簡單:

        申明一個 父件為 此狀態列的進度條。

        然後根據 父件的相關大小參數,調整設定 自己的 相當位置與大小。

        一般 視窗綁定 視窗大小變化事件 從而實現即時 進度條與父件 大小相映襯。(以下代碼沒綁定事件)

 

 1 # coding: utf-8 2 # author: Twobox 3  4 import wx 5  6 class MyWin(wx.Frame): 7     def __init__(self, parent, title): 8         super(MyWin, self).__init__(parent = parent, title = title) 9         self.initUI()10         self.Show()11 12     def initUI(self):13         statusBar = self.CreateStatusBar(id = -1)14         statusBar.SetFieldsCount(2)15 16         print(statusBar.GetSize())17         gauge = wx.Gauge(statusBar, range = 100, pos = (2, 2), size = (statusBar.GetSize()[0]/2-13, 22), style=wx.GA_HORIZONTAL)18         gauge.SetValue(50) # 設定當前進度 一般放到事件中 即時更新19 20 def main():21     app = wx.App()22     MyWin(None, "Windows - test")23     app.MainLoop()24 25 if __name__ == '__main__':26     main()

 

  4、狀態列組件 學習代碼

 

 1 #coding:utf-8 2 #author:Twobox 3  4 import wx 5  6 class Mywin(wx.Frame): 7     """2種方法""" 8     def __init__(self, parent, title): 9         super(Mywin, self).__init__(parent = parent, title = title)10         self.initUI_2()11         self.Show()12 13     def initUI_1(self):14         """通過建立一個StatusBar對象,再將再添加到當前視窗。"""15         self.statusBar1 = wx.StatusBar(self, -1)                #執行個體化一個 狀態列 對象16         self.statusBar1.SetFieldsCount(2)                       #設定 狀態列分塊數17         self.statusBar1.SetStatusWidths([-4,-1])                #設定 狀態列分塊的比例18         self.statusBar1.SetStatusText("  第 1 行 , 第 1 列", 1)  #設定 狀態列內的內容,索引從 0 開始19         self.SetStatusBar(self.statusBar1)                      #將 狀態列對象 添加到 視窗框體中20 21     def initUI_2(self):22         """StatusBar2當做是當前視窗建立出來的對象後直接使用。"""23         self.statusBar2 = self.CreateStatusBar()                #通過當前視窗框體建立出來一個 狀態列 對象24         self.statusBar2.SetFieldsCount(2)                       #與上相同25         self.statusBar2.SetStatusWidths([-4,-1])26         self.statusBar2.SetStatusText("  第 1 行 , 第 1 列",1)27         self.statusBar2.Show(True)                             #可設定為隱藏(即不可見)28 29 def main():30     app = wx.App()31     Mywin(None, "StatusBar - Test")32     app.MainLoop()33 34 if __name__ == '__main__':35     main()

 

2、訊息對話方塊組件  1、基本介紹

      :

      

      這種資訊框大家幾乎天天都接觸,比如關閉個軟體 它會彈個框框問你是否真的關閉,或者安裝完一個軟體的時候詢問你是否立即運行,等等等等。

      訊息框的一般構成:

      標題:X 鍵左邊的那個 “Hello World!”

      訊息表徵圖:是個驚嘆號

      訊息內容:純白色框框內的文字嘍~

        可以是多行,O.O 如果讓一萬個分行符號上去 應該也是可以的。

      若干個按鈕:是一個,一共有四種:

        YES 、NO 、CANCEL 、OK 。

        單擊後會返回以下相應的4條表示,所以可以用來判斷按了哪個按鈕。

        wx.ID_YES, wx.ID_NO, wx.ID_CANCEL, wx.ID_OK。

  2、一般使用過程

      以下 事件綁定在一個按鈕上,單擊後觸發事件函數:

      

      首先建立一個 訊息框對象:

        message:訊息框的內容

        caotion:訊息框的標題

        style:指定按鈕類型 與 訊息框表徵圖樣式 (style 可接受的參數列表 請向下看)

      一個判斷語句:

        該判斷語句 先執行 資訊框 的 .ShowModal() 方法 (即彈出這個資訊框)。

        當我們單機相關按鈕後,該方法返回一個標識 。

      最後根據接受到的不同的表示完成 我們需要的不同的操作

  3、其他(style 可接受參數說明)

        

        其中 wx.ICON_*** 的為 資訊框的表徵圖樣式。

        其他的為,資訊框的按鈕樣式。

  4、資訊框學習代碼 (有點意思)

 

 1 # coding: utf-8 2 # author: Twobox 3  4 import wx 5  6 class MyWin(wx.Frame): 7     def __init__(self, parent, title): 8         super(MyWin, self).__init__(parent=parent, title=title) 9         self.initUI()10 11     def initUI(self):12         panel = wx.Panel(self)13         vbox = wx.BoxSizer(wx.VERTICAL)14 15         # 添加 兩個 Button16         self.bt1 = wx.Button(parent=panel, label=u"問好")17         self.bt2 = wx.Button(parent=panel, label=u"關閉")18         self.bt1.Bind(wx.EVT_BUTTON, self.eventButtonOne)19         self.bt2.Bind(wx.EVT_BUTTON, self.eventButtonTwo)20 21         vbox.Add(self.bt1, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)22         vbox.Add(self.bt2, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)23 24         panel.SetSizer(vbox)25 26         self.Center()27         self.Show()28 29     def eventButtonOne(self, event):30         msgDialog = wx.MessageDialog(parent=None, message = u"你今天過的好嗎?(只能說好)", caption = u"Hello World!", style = wx.OK)31         if msgDialog.ShowModal() == wx.ID_OK:32             self.bt1.SetLabel(u"回答:今天很好")33         else:34             self.bt1.SetLabel(u"回答:今天不很好")35 36     def eventButtonTwo(self, event):37         msgDialog = wx.MessageDialog(parent = None, message = u"確認關閉該視窗?", caption = u"Hello World!", style = wx.YES_NO|wx.ICON_AUTH_NEEDED)38         if msgDialog.ShowModal() == wx.ID_YES:39             self.Close()40         self.bt2.SetLabel(u"選項:不關閉")41 42 def main():43     app = wx.App()44     MyWin(None, "MessageDialog - Test")45     app.MainLoop()46 47 if __name__ == '__main__':48     main()

 

3、感想

    O.O 好累 好累,如果再慢一點搞完 怕是中午飯都要錯過了。。先強烈譴責一下 學校食堂飯菜一成不變。。舒暢多了。。

    這兩種組件的運用 都不難,此文章的主要作用還是 歸納了一下的基本用法,方便以後再看看。

    O.O wxpython 在網上系統性的資料少了點,零零散散,找起來。。哎。。。

4、後言

  資訊框參考的隨筆:http://www.cnblogs.com/dyx1024/archive/2012/07/07/2580380.html

  轉載請註明出處 (●'◡'●):http://www.cnblogs.com/Twobox/

  2017-08-23 12:35:23

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.