天天看點

wxpython學習筆記

wxPython是Python程式設計語言的一個GUI工具箱。他使得Python程式員能夠輕松的建立具有健壯、功能強大的圖形使用者界面的程式。它是Python語言對流行的wxWidgets跨平台GUI工具庫的綁定。而wxWidgets是用C++語言寫成的。和Python語言與wxWidgets GUI工具庫一樣,wxPython是開源軟體。這意味着任何人都可以免費地使用它并且可以檢視和修改它的源代碼,或者貢獻更新檔,增加功能。wxPython是跨平台的。這意味着同一個程式可以不經修改地在多種平台上運作。現今支援的平台有:32位微軟Windows作業系統、大多數Unix或類Unix系統、蘋果Mac OS X。由于使用Python作為程式設計語言,wxPython編寫簡單、易于了解。

基本使用的話到這個位址看已經很詳細了,我沒有必要重複一遍啦:

<a target="_blank" href="http://wiki.wxpython.org/Getting%20Started">http://wiki.wxpython.org/Getting%20Started</a>

<a target="_blank" href="http://wiki.wxpython.org/Getting%20Started#head-33e6dc36df2a89db146142e9a97b6e36b956875f">http://wiki.wxpython.org/Getting%20Started#head-33e6dc36df2a89db146142e9a97b6e36b956875f</a>

這個東東使用起來比較麻煩,參考以下頁面吧:

這個控件比較強大,是我比較喜歡使用的控件之一。在《wxPythonInAction》一書中第13章有介紹(想要該書電子版及附帶源碼的朋友可以問我要)

下面是list_report.py中提供的簡單用法:

wxpython學習筆記

Code:ListCtrl

對于ListCtrl控件,我要補充的幾個地方是:

1. 如何擷取選中的項目?

 最常用的方法就是擷取選中的第一項:GetFirstSelected(),這個函數傳回一個int,即ListCtrl中的項(Item)的ID。

 還有一個方法是:GetNextSelected(itemid),擷取指定的itemid之後的第一個被選中的項,同樣也是傳回itemid。

 通過這兩個方法,我們就可以周遊所有選中的項了:

wxpython學習筆記

Code : GetNextSelected

如果要擷取某一行,某一列的值,則通過下面的方法:

#擷取第0行,第1列的值

itemtext = self.list.GetItem(0, 1).Text

2. 如何在標明項後添加右鍵菜單?

在__init__函數中,添加如下的事件綁定:

self.list.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)

然後,添加OnContextMenu方法:

wxpython學習筆記

OnContextMenu

使用起來非常簡單:

wxpython學習筆記

FileDialog

wxpython學習筆記

DirDialog

比如,希望按F5執行某個操作,可以在__init__函數中使用如下方法:

acceltbl = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_F5, self.btnrun.GetId())])

self.SetAcceleratorTable(acceltbl)

 還有一種很常用的情況,就是按ESC鍵關閉視窗。我們知道,有一種非常簡單的辦法就是使用SetId(wx.ID_CANCEL)方法,如:

self.btncancel = wx.Button(self.panel1, -1, 'Cancel', wx.Point(380, 280))

self.btncancel.SetId(wx.ID_CANCEL)

 這樣,按ESC鍵時,将會關閉目前Dialog,注意!這裡是說Dialog,即繼承自wx.Dialog的視窗對象,對于wx.Frame使用SetId似乎沒有效果。

在《wxPythonInAction》18章有個例子,如下:

wxpython學習筆記

wx.Timer

 在wxpython中編寫多線程案例時特别需要注意,線程中通知視窗對象更新狀态時,必須使用wx.CallAfter。同樣是18章的例子:

wxpython學習筆記

wx.CallAfter

通常,我們調用os.popen運作其他外部程式是沒有問題的。但是在wxpython中,将會讓wx失去目前的焦點,即使得打開的程式成為了一個模式對話框。要解決這個問題可以使用wx自帶的方法,wx.Execute。

wx.Execute('notepad')

本文轉自CoderZh部落格園部落格,原文連結:http://www.cnblogs.com/coderzh/archive/2008/11/23/1339310.html,如需轉載請自行聯系原作者