天天看點

wxpython基本控件

轉自:http://hi.baidu.com/ylf575/blog/item/cbbc47100de3adfac2ce794b.html

一、靜态文本控件

wx.StaticText(parent, id, label, pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=0, name="staticText")

wx.StaticText構造函數的參數

parent:父視窗部件。

id:辨別符。使用-1可以自動建立一個唯一的辨別。

label:你想顯示在靜态控件中的文本。

pos:一個wx.Point或一個Python元組,它是視窗部件的位置。

size:一個wx.Size或一個Python元組,它是視窗部件的尺寸。

style:樣式标記。

name:對象的名字,用于查找的需要。

其中樣式

wx.ALIGN_CENTER:靜态文本位于靜态文本控件的中心。

wx.ALIGN_LEFT:文本在視窗部件中左對齊。這是預設的樣式。

wx.ALIGN_RIGHT:文本在視窗部件中右對齊。

wx.ST_NO_AUTORESIZE:如果使用了這個樣式,那麼在使用了SetLabel()改變文本之後,靜态

文本控件不将自我調整尺寸。你應結合使用一個居中或右對齊的控件來保持對齊。

二、文本輸入控件

wx.TextCtrl的樣式

wx.TE_CENTER:控件中的文本居中。

wx.TE_LEFT:控件中的文本左對齊。預設行為。

wx.TE_NOHIDESEL:文本始終高亮顯示,隻适用于Windows。

wx.TE_PASSWORD:不顯示所鍵入的文本,代替以星号顯示。

wx.TE_PROCESS_ENTER:如果使用了這個樣式,那麼當使用者在控件内按下Enter鍵時,一個文本

輸入事件被觸發。否則,按鍵事件内在的由該文本控件或該對話框管理。

wx.TE_PROCESS_TAB:如果指定了這個樣式,那麼通常的字元事件在Tab鍵按下時建立(一般意

味一個制表符将被插入文本)。否則,tab由對話框來管理,通常是控件間的切換。

wx.TE_READONLY:文本控件為隻讀,使用者不能修改其中的文本。

wx.TE_RIGHT:控件中的文本右對齊。

對于添加文本和移動插入點,該文本控件自動管理使用者的按鍵和滑鼠事件。對于該文本控件可

用的指令控制組合說明如下:

<ctrl-x>:剪切

<ctrl-c>:複制

<ctrl-v>:粘貼

<ctrl-z>:撤消

AppendText(text):在尾部添加文本。

Clear():重置控件中的文本為“”。并且生成一個文本更新事件。

EmulateKeyPress(event):産生一個按鍵事件,插入與事件相關聯的控制符,就如同實際的按

鍵發生了。

GetInsertionPoint()

SetInsertionPoint(pos)

SetInsertionPointEnd():得到或設定插入點的位置,位置是整型的索引值。控件的開始位置

是0。

GetRange(from, to):傳回控件中位置索引範圍内的字元串。

GetSelection()

GetStringSelection()

SetSelection(from, to):GetSelection()以元組的形式傳回目前所選擇的文本的起始位置的

索引值(開始,結束)。GetStringSelection()得到所選擇的字元串。SetSelection(from,

to)設定選擇的文本。

GetValue()

SetValue(value):SetValue()改變控件中的全部文本。GetValue()傳回控件中所有的字元串

Remove(from, to):删除指定範圍的文本。

Replace(from, to, value):用給定的值替換掉指定範圍内的文本。這可以改變文本的長度。

WriteText(text):類似于AppendText(),隻是寫入的文本被放置在目前的插入點。

三、多行文本控件 wx.TE_MULTILINE

wx.HSCROLL:如果文本控件是多行的,并且如果該樣式被聲明了,那麼長的行将不會自動換行,并顯示水準滾動條。該選項在GTK+中被忽略。

wx.TE_AUTO_URL:如果豐富文本選項被設定并且平台支援的話,那麼當使用者的滑鼠位于文本中的一個URL上或在該URL上敲擊時,這個樣式将導緻一個事件被生成。

wx.TE_DONTWRAP:wx.HSCROLL的别名。

wx.TE_LINEWRAP:對于太長的行,以字元為界換行。某些作業系統可能會忽略該樣式。

wx.TE_MULTILINE:文本控件将顯示多行。

wx.TE_RICH:用于Windows下,豐富文本控件用作基本的視窗部件。這允許樣式文本的使用。

wx.TE_RICH2:用于Windows下,把最新版本的豐富文本控件用作基本的視窗部件。

wx.TE_WORDWRAP:對于太長的行,以單詞為界換行。許多作業系統會忽略該樣式。

四、建立字型

wx.Font(pointSize, family, style, weight, underline=False,

faceName="", encoding=wx.FONTENCODING_DEFAULT)

wx.DECORATIVE:一個正式的,老的英文樣式字型。

wx.DEFAULT:系統預設字型。

wx.MODERN:一個單間隔(固定字元間距)字型。

wx.ROMAN:serif字型,通常類似于Times New Roman。

wx.SCRIPT:手寫體或草寫體

wx.SWISS:sans-serif字型,通常類似于Helvetica或Arial。

style參數指明字型的是否傾斜,它的值有:wx.NORMAL, wx.SLANT, 和 wx.ITALIC。同樣,weight參數指明字型的醒目程度,可選值有:wx.NORMAL, wx.LIGHT,或wx.BOLD。這些常量值的行為根據它的名字就可以知道了。underline參數僅工作在Windows系統下,如果取值為True,則加下劃線,False為無下劃線。

faceName參數指定字型名。

encoding參數允許你在幾個編碼中選擇一個,它映射内部的字元和字本顯示字元。編碼不是Unicode編碼,隻是用于wxPython的不同的8位編碼。大多數情況你可以使用預設編碼。

五、響應文本事件

frame.Bind(wx.EVT_TEXT, frame.OnText, text)

EVT_TEXT:當控件中的文本改變時産生該事件。文本因使用者的輸入或在程式中使用SetValue()而被改變,都要産生該事件。

EVT_TEXT_ENTER:當使用者在一個wx.TE_PROCESS_ENTER樣式的文本控件中按下了Enter鍵時,産生該事件。

EVT_TEXT_URL:如果在Windows系統上,wx.TE_RICH或wx.TE_RICH2樣式被設定了,并且wx.TE_AUTO_URL樣式也被設定了,那麼當在文本控件内的URL上發生了一個滑鼠事件時,該事件被觸發。

EVT_TEXT_MAXLEN:如果使用SetMaxLength()指定了該控件的最大長度,那麼當使用者試圖輸入更長的字元串時,該事件被觸發。你可能會用這個,例如,這時給使用者顯示一個警告消息。

六、使用按鈕

1.文本按鈕 

wx.Button(parent, id, label, pos, size=wxDefaultSize, style=0,

    validator, name="button")

2.位圖按鈕

wx.BitmapButton(panel, -1, bmp, pos=(10, 20))

3.開關按鈕(toggle button)

wx.ToggleButton(panel, -1,u"開關", pos=(10, 150))

當你按下一個開關按鈕(toggle button)時,它将一直保持被按下的狀态直到你再次敲擊它。

在wx.ToggleButton與父類wx.Button之間隻有丙個差別:

a、當被敲擊時,wx.ToggleButton發送一個EVT_TOGGLEBUTTON事件。

b、wx.ToggleButton有GetValue()和SetValue()方法,它們處理按鈕的二進制狀态。

4.通用按鈕

有幾個使用通用按鈕的原因:

a、通用按鈕比本地按鈕具有更好的跨平台的外觀。另一方面,通用按鈕可能在具體的系統上看起來與本地按鈕有些微的不同。

b、使用通用按鈕,你對它的外觀有更多的控制權,并且能改變屬性,如3D斜面的寬度和顔色,而這對于本地控件可能是不允許的。

c、通用按鈕類允許特性的合并,而wxWidget按鈕不行。比如GenBitmapTextButton允許文本标簽和位圖的組合,GenBitmapToggleButton實作一個位圖切換按鈕。

d、如果你正在建立一個按鈕類,使用通用按鈕是較容易的。由于其代碼和參數是用Python寫的,是以當建立一個新的子類的時候,對于檢查和覆寫,它們的可用性更好。

滑塊(slider)

滑塊是一個視窗部件,它允許使用者通過在該控件的尺度内拖動訓示器來選擇一個數值。在wxPython中,該控件類是wx.Slider,它包括

了滑塊的目前值的隻讀文本的顯示。

wx.Slider(parent, id, value, minValue, maxValue,

    pos=wxDefaultPosition, size=wx.DefaultSize,

    style=wx.SL_HORIZONTAL, validator=wx.DefaultValidator,

    name="slider")

wx.Slider的樣式

wx.SL_AUTOTICKS:如果設定這個樣式,則滑塊将顯示刻度。刻度間的間隔通過SetTickFreq方法來控制。

wx.SL_HORIZONTAL:水準滑塊。這是預設值。

wx.SL_LABELS:如果設定這個樣式,那麼滑塊将顯示兩頭的值和滑塊的目前隻讀值。有些平台可能不會顯示目前值。

wx.SL_LEFT:用于垂直滑塊,刻度位于滑塊的左邊。

wx.SL_RIGHT:用于垂直滑塊,刻度位于滑塊的右邊。

wx.SL_TOP:用于水準滑塊,刻度位于滑塊的上部。

wx.SL_VERTICAL:垂直滑塊。

GetRange()

SetRange(minValue, maxValue):設定滑塊的兩端值。

GetTickFreq()

SetTickFreq(n, pos):使用參數n設定刻度的間隔。參數pos沒有被使用,但是它仍然是必要的,将它設定為1。

GetLineSize()

SetLineSize(lineSize):設定你每按一下方向鍵,滑塊所增加或減少的值。

GetPageSize()

SetPageSize(pageSize):設定你每按一下PgUp或PgDn鍵,滑塊所增加或減少的值。

SetValue(value):設定滑塊的值。

微調控制器

wx.SpinCtrl

wx.SpinCtrl(parent, id=-1, value=wx.EmptyString,

    pos=wx.DefaultPosition, size=wx.DefaultSize,

    style=wx.SP_ARROW_KEYS, min=0, max=100, initial=0,

    name="wxSpinCtrl")

進度條 wx.Gauge

wx.Gauge(parent, id, range, pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=wx.GA_HORIZONTAL,

    validator=wx.DefaultValidator, name="gauge")

複選框 wx.CheckBox

wx.CheckBox(parent, id, label, pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=0, name="checkBox")

label參數是複選框的标簽文本。複選框沒有樣式标記,但是它們産生屬于自己的獨一無二的指令事件:EVT_CHECKBOX。wx.CheckBox的開關狀

态可以使用GetValue()和SetValue(state)方法來通路,并且其值是一個布爾值。IsChecked()方法等同于GetValue()方法,隻是為了讓代碼看起

來更易明白。

單選按鈕(radio button)

wx.RadioButton

wx.RadioBox

wx.RadioButton(parent, id, label, pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=0,

    validator=wx.DefaultValidator, name="radioButton")

wx.RadioBox(parent, id, label, pos=wx.DefaultPosition,

    size=wxDefaultSize, choices=None, majorDimension=0,

    style=wx.RA_SPECIFY_COLS, validator=wx.DefaultValidator,

    name="radioBox")

wx.RadioBox的方法

EnableItem(n, flag):flag參數是一個布爾值,它用于使索引為n的按鈕有效或無效。要使整個框立即有效,使用Enable()。

FindString(string):根據給定的标簽傳回相關按鈕的整數索引值,如果标簽沒有發現則傳回-1。

GetCount():傳回框中按鈕的數量。

GetItemLabel(n)

SetItemLabel(n, string):傳回或設定索引為n的按鈕的字元串标簽。

SetSelection(n)

SetStringSelection( string):GetSelection() 和 SetSelection()方法處理目前所選擇的單選按鈕的整數索引。GetStringSelection()傳回目前所選擇的按鈕的字元串标簽,SetStringSelection()改變所選擇的按鈕的字元串标簽為給定值。沒有set*()産生EVT_RADIOBOX事件。

ShowItem(item, show):show參數是一個布爾值,用于顯示或隐藏索引為item的按鈕。

清單框wx.ListBox

wx.ListBox(parent, id, pos=wx.DefaultPosition,

    size=wx.DefaultSize, choices=None, style=0,

    validator=wx.DefaultValidator, name="listBox")

wx.LB_EXTENDED:使用者可以通過使用shift并敲擊滑鼠來選擇一定範圍内的連續的選項,或使用等同功能的按鍵。

wx.LB_MULTIPLE:使用者可以一次選擇多個選項(選項可以是不連續的)。實際上,在這種情況下,清單框的行為就像是一組複選框。

wx.LB_SINGLE:使用者一次隻能選一個選項。實際上,在這種情況下,清單框的行為就像是一組單選按鈕。

清單框的滾動條類型樣式

wx.LB_ALWAYS_SB:清單框将始終顯示一個垂直的滾動條,不管有沒有必要。

wx.LB_HSCROLL:如果本地控支援,那麼清單框在選擇項太多時,将建立一個水準滾動條。

wx.LB_HSCROLL:清單框隻在需要的時候顯示一個垂直的滾動條。這是預設樣式。

還有一個樣式wx.LB_SORT,它使得清單中的元素按字母順序排序

清單框的方法

Append(item):把字元串項目添加到清單框的尾部。

Clear():清空清單框。

Delete(n):删除清單框中索引為n的項目。

Deselect(n):在多重選擇清單框中,導緻位于位置n的選項取消選中。在其它樣式中不起作用。

FindString(string):傳回給定字元串的整數位置,如果沒有發現則傳回-1。

GetCount():傳回清單中字元串的數量。

SetSelection(n, select)

SetStringSelection(string, select)

GetSelections():GetSelection()得到目前選擇項的整數索引(僅對于單選清單)。對于多選清單,使用GetSelections()來傳回包含所選項目的整數位置的元組。對于單選清單,GetStringSelection()傳回目前選擇的字元串。相應的set方法使用布爾值參數select設定指定字元串或索引選項的狀态。使用這種方法改變選擇不觸發EVT_LISTBOX事件。

GetString(n)

SetString(n, string):得到或設定位置n處的字元串。

InsertItems(items, pos):插入參數items中的字元串清單到該清單框中pos參數所指定的位置前。位置0表示把項目放在清單的開頭。

Selected(n):傳回對應于索引為n的項目的選擇狀态的布爾值。

Set(choices):重新使用choices的内容設定清單框。

合并複選框和清單框 wx.CheckListBox

下拉 wx.Choice

wx.Choice(parent, id, pos=wx.DefaultPosition,

    validator=wx.DefaultValidator, name="choice")

wx.Choice沒有專門的樣式,但是它有獨特的指令事件:EVT_CHOICE。幾乎表7.14中所有适用于單選清單框的方法都适用于wx.Choice對象。

文本域與清單合并在一起 wx.ComboBox

wx.ComboBox(parent, id, value="", pos=wx.DefaultPosition,

    size=wx.DefaultSize, choices, style=0,

    validator=wx.DefaultValidator, name="comboBox")

常用控件總結

1、對于靜态文本标簽的顯示,你可以使用wx.StaticText類。還有一個完全用wxPython實作的版本,名為wx.lib.stattext.GenStaticText。

2、如果你需要一個控件以讓使用者輸入文本,那麼使用類wx.TextCtrl。它允許單行和多行的輸入,還有密碼掩飾和其它的功用。如果本地控支援它,你可以使用wx.TextCtrl來得到樣式文本。樣式是wx.Text-Attr類的執行個體,wx.Font包含字型資訊。對于所有的系統,你可以使用類wx.stc.StyledTextCtrl(它是wxPython對開源Scintilla文本元件的封裝)在一個可編輯的文本元件中實作顔色和字型樣式。

3、建立按鈕,使用wx.Button類,它也有一個通用版wx.lib.buttons.GenButton。按鈕可以使用位圖來代替一個文本标簽(wx.BitmapButton),或在按下和未按下之間有一個開關狀态。還有一個等價于位圖和開關按鈕的通用版,它比标準版有更全面的特性。

4、有一些方法用于選擇或顯示數字值。你可以使用wx.Slider類來顯示一個垂直或水準的滑塊。wx.SpinCtrl顯示一個可以使用上下按鈕來改變數字值的文本控件。wx.Gauge控件顯示一個進度條訓示器。

5、你可以從一系列的控件中選出讓使用者從清單選項作出選擇的最佳控件,最佳控件所應考慮的條件是選項的數量,使用者能否多選和你想使用的螢幕空間的總量。複選框使用wx.CheckBox類。這兒有兩個方法去得到單選按鈕:wx.RadioButton給出單個單選按鈕,而wx.RadioBox給出顯示在一起的一組按鈕。這兒有幾個清單顯示控件,它們的用法相似。清單框的建立使用wx.ListBox,并且你可以使用wx.CheckListBox來增加複選框。對于更簡潔的下拉式,使用wx.Choice. wx.ComboBox合并了清單和文本控件的特性。

架構 wx.Frame

wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,

    name="frame")

架構的形狀和尺寸标記

wx.FRAME_NO_TASKBAR:一個完全标準的架構,除了一件事:在Windows系統和别的支援這個特性的系統下,它不顯示在工作列中。當最小化時,該架構圖示化到桌面而非工作列。

wx.FRAME_SHAPED:非矩形的架構。架構的确切形狀使用SetShape()方法來設定。視窗的形狀将在本章後面部分讨論。

wx.FRAME_TOOL_WINDOW:該架構的标題欄比标準的小些,通常用于包含多種工具按鈕的輔助架構。在Windows作業系統下,工具視窗将不顯示在工作列中。

wx.ICONIZE:視窗初始時将被最小化顯示。這個樣式僅在Windows系統中起作用。

wx.MAXIMIZE:視窗初始時将被最大化顯示(全屏)。這個樣式僅在Windows系統中起作用。

wx.MINIMIZE:同wx.ICONIZE。

視窗漂浮行為的樣式

wx.FRAME_FLOAT_ON_PARENT:架構将漂浮在其父視窗(僅其父視窗)的上面。(很明顯,要使用這個樣式,架構需要有一個父視窗)。其它的架構可以遮蓋這個架構。

wx.STAY_ON_TOP:該架構将始終在系統中其它架構的上面。(如果你有多個架構使用了這個樣式,那麼它們将互相重疊,但對于系統中其它的架構,它們仍在上面。)

裝飾視窗的樣式

wx.CAPTION:給視窗一個标題欄。如果你要放置最大化框、最小化框、系統菜單和上下文幫助,那麼你必須包括該樣式。

wx.FRAME_EX_CONTEXTHELP:這是用于Windows作業系統的,它在标題欄的右角放置問号幫助圖示。這個樣式是與wx.MAXIMIZE_BOX和WX.MINIMIZE_BOX樣式互斥的。它是一個擴充的樣式,并且必須使用兩步來建立,稍後說明。

wx.FRAME_EX_METAL:在Mac OS X上,使用這個樣式的架構有一個金屬質感的外觀。這是一個附加樣式,必須使用SetExtraStyle方法來設定。

wx.MAXIMIZE_BOX:在标題欄的标準位置放置一個最大化框。

wx.MINIMIZE_BOX:在标題欄的标準位置放置一個最小化框。

wx.CLOSE_BOX:在标題欄的标準位置放置一個關閉框。

wx.RESIZE_BORDER:給架構一個标準的可以手動調整尺寸的邊框。

wx.SIMPLE_BORDER:給架構一個最簡單的邊框,不能調整尺寸,沒有其它裝飾。該樣式與所有其它裝飾樣式是互斥的。

wx.SYSTEM_MENU:在标題欄上放置一個系統菜單。這個系統菜單的内容與你所使用的裝飾樣式有關。例如,如果你使用wx.MINIMIZE_BOX,那麼系統菜單項就有“最小化”選項。

wx.Frame的公共屬性

GetBackgroundColor()

SetBackgroundColor(wx.Color):背景色是架構中沒有被其子視窗部件覆寫住的那些部分的顔色。你可以傳遞一個wx.Color或顔色名給設定方法。任何傳遞給需要顔色的wxPython方法的字元串,都被解釋為對函數wx.NamedColour()的調用。

GetId()

SetId(int):傳回或設定視窗部件的辨別符。

GetMenuBar()

SetMenuBar(wx.MenuBar):得到或設定架構目前使用的的菜單欄對象,如果沒有菜單欄,則傳回None。

GetPosition()

GetPositionTuple()

SetPosition(wx.Point):以一個wx.Point或Python元組的形式傳回視窗左上角的x,y的位置。對于頂級視窗,該位置是相對于顯示區域的坐标,對于子視窗,該位置是相對于父視窗的坐标。

GetSize()

GetSizeTuple()

SetSize(wx.Size):C++版的get*或set*方法被覆寫。預設的get*或set*使用一個wx.Size對象。GetSizeTuple()方法以一個Python元組的形式傳回尺寸。也可以參看通路該資訊的另外的方法SetDimensions()。

GetTitle()

SetTitle(String):得到或設定架構标題欄的字元串。

wx.Frame的方法

Center(direction=wx.BOTH):架構居中(注意,非美語的拼寫Centre,也被定義了的)。參數的預設值是wx.BoTH,在此情況下,框是在兩個方向都居中的。參數的值若是wx.HORIZONTAL或wx.VERTICAL,表示在水準或垂直方向居中。

Enable(enable=true):如果參數為true,則架構能夠接受使用者的輸入。如果參數為False,則使用者不能在架構中輸入。相對應的方法是Disable()。

GetBestSize():對于wx.Frame,它傳回架構能容納所有子視窗的最小尺寸。

Iconize(iconize):如果參數為true,最小化該架構為一個圖示(當然,具體的行為與系統有關)。如果參數為False,圖示化的架構恢複到正常狀态。

IsEnabled():如果架構目前有效,則傳回True。

IsFullScreen():如果架構是以全屏模式顯示的,則傳回True,否則False。細節參看ShowFullScreen。

IsIconized():如果架構目前最小化為圖示了,則傳回True,否則False。

IsMaximized():如果架構目前是最大化狀态,則傳回True,否則False。

IsShown():如果架構目前可見,則傳回True。

IsTopLevel():對于頂級視窗部件如架構或對話框,總是傳回True,對于其它類型的視窗部件傳回False。

Maximize(maximize):如果參數為True,最大化架構以填充螢幕(具體的行為與系統有關)。這與敲擊架構的最大化按鈕所做的相同,這通常放大架構以填充桌面,但是工作列和其它系統元件仍然可見。

Refresh(eraseBackground=True,

rect=None):觸發該架構的重繪事件。如果rect是none,那麼整個架構被重畫。如果指定了一個矩形區域,那麼僅那個矩形區域被重畫。如果eraseBackground為True,那麼這個視窗的北影也将被重畫,如果為False,那麼背景将不被重畫。

SetDimensions(x, y, width, height,

sizeFlags=wx.SIZE_AUTO):使你能夠在一個方法調用中設定視窗的尺寸和位置。位置由參數x和y決定,尺寸由參數width和height決定。前四個參數中,如果有的為-1,那麼這個-1将根據參數sizeFlags的值作相應的解釋。表8.6包含了參數sizeFlags的可能取值。

Show(show=True):如果參數值為True,導緻架構被顯示。如果參數值為False,導緻架構被隐藏。Show(False)等同于Hide()。

ShowFullScreen(show,

style=wx.FULLSCREEN_ALL):如果布爾參數是True,那麼架構以全屏的模式被顯示——意味着架構被放大到填充整個顯示區域,包括桌面上的工作列和其它系統元件。如果參數是False,那麼架構恢複到正常尺寸。style參數是一個位掩碼。預設值wx.FULLSCREEN_ALL訓示wxPython當全屏模式時隐藏所有視窗的所有樣式元素。後面的這些值可以通過使用按位運算符來組合,以取消全屏模式架構的部分裝飾:wx.FULLSCREEN_NOBORDER, wx.FULLSCREEN_NOCAPTION,

wx.FULLSCREEN_NOMENUBAR,

wx.FULLSCREEN_NOSTATUSBAR,

wx.FULLSCREEN_NOTOOLBAR。

SetDimensions方法的尺寸标記

wx.ALLOW_MINUS_ONE:一個有效的位置或尺寸。

wx.SIZE_AUTO:轉換為一個wxPython預設值。

wx.SIZE_AUTO_HEIGHT:一個有效的高度,或一個wxPython預設高度。

wx.SIZE_AUTO_WIDTH:一個有效的寬度,或一個wxPython預設寬度。

wx.SIZE_USE_EXISTING:使用現有的尺寸。

帶有滾動條的架構

wx.ScrolledWindow(parent, id=-1, pos=wx.DefaultPosition,

    size=wx.DefaultSize, style=wx.HSCROLL | wx.VSCROLL,

    name="scrolledWindow")

MDI架構

wx.MDIParentFrame(parent, id, title, pos = wx.DefaultPosition, 

        size=wxDefaultSize, 

        style=wx.DEFAULT_FRAME_STYLE | wx.VSCROLL | wx.HSCROLL, 

        name="frame")

小型架構

wx.MiniFrame的構造函數等同于wx.Frame

wx.MiniFrame的樣式标記

wx.THICK_FRAME:在Windows或Motif下,使用粗邊框繪制架構。

wx.TINY_CAPTION_HORIZONTAL:代替wx.CAPTION而顯示一個較小的水準标題。

wx.TINY_CAPTION_VERTICAL:代替wx.CAPTION而顯示一個較小的垂直标題。

非矩形的架構 (略)

分割窗 wx.SplitterWindow

wx.SplitterWindow(parent, id=-1, pos=wx.DefaultPosition, 

        size=wx.DefaultSize, style=wx.SP_3D, 

        name="splitterWindow") 

parent是視窗部件的容器,pos是視窗部件在它的父容器中位置,size是它的尺寸。

要顯示兩個子視窗,使用SplitHorizontally (window1,window2,sashPosition=0)或SplitVertically(window1, window2, sashPosition=0)

分割窗的樣式

wx.SP_3D:繪制三維的邊框和分割條。這是一個預設樣式。

wx.SP_3DBORDER:繪制三維樣式的邊框,不包括分割條。

wx.SP_3DSASH:繪制三維樣式的分割條,不包括邊框。

wx.SP_BORDER:繪制視窗的邊框,非三維的樣式。

wx.SP_LIVE_Update:改變響應分割條移動的預設行為。如果沒有設定這個标記,那麼當使用者拖動分割條時,将繪制一條線來标明分割條的新位置。子視窗的尺寸沒有被實際地更新,直到完成分割條拖放。如果設定了這個标記,那麼當分割條在被拖動時,子視窗的尺寸将不斷地變化。

wx.SP_NOBORDER:不繪制任何邊框。

wx.SP_NO_XP_THEME :在Windows XP系統下,分割條不使用XP的主題樣式,它給視窗一個更經典的外觀。

wx.SP_PERMIT_UNSPLIT:如果設定了這個樣式,那麼視窗始終不被分割。如果不設定,你可以通過設定大于0的最小化的窗格尺寸來防止視窗被分割。

分割窗的事件類型

EVT_SPLITTER_DCLICK:當分割條被輕按兩下時觸發。捕捉這個事件不阻塞标準的不分割行為,除非你調用事件的Veto()方法。

EVT_SPLITTER_SASH_POS_CHANGED:分割條的改變結束後觸發,但在此之前,改變将在螢幕上顯示(是以你可以再作用于它)。這個事件可以使用Veto()來中斷。

EVT_SPLITTER_SASH_POS_CHANGING:當分割條在被拖動時,不斷觸發該事件。這個事件可以通過使用事件的Veto()方法來中斷,如果被中斷,那麼分割條的位置不被改變。

EVT_SPLITTER_UNSPLIT:變成未分割狀态時觸發。

模式對話框

import wx

class SubclassDialog(wx.Dialog):

    def __init__(self):#初始化對話框

        wx.Dialog.__init__(self, None, -1, 'Dialog Subclass', 

                size=(300, 100))

        okButton = wx.Button(self, wx.ID_OK, "OK", pos=(15, 15))

        okButton.SetDefault()

        cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel", 

                pos=(115, 15))

if __name__ == '__main__':

    app = wx.PySimpleApp()

    app.MainLoop() 

    dialog = SubclassDialog()

    result = dialog.ShowModal()#顯示模式對話框

    if result == wx.ID_OK:

        print "OK"

    else:

        print "Cancel"

    dialog.Destroy()

警告框

方法一

if __name__ == "__main__":

# 方法一,使用類

    dlg = wx.MessageDialog(None, "Is this explanation OK?",

                          'A Message Box',

                          wx.YES_NO | wx.ICON_QUESTION)

    retCode = dlg.ShowModal()

    if (retCode == wx.ID_YES):

        print "yes"

        print "no"

    dlg.Destroy()

方法二

retCode = wx.MessageBox("Is this way easier?", "Via Function",

            wx.YES_NO | wx.ICON_QUESTION)

wx.MessageDialog類

wx.MessageDialog(parent, message, caption="Message box", 

    style=wx.OK | wx.CANCEL, pos=wx.DefaultPosition)

wx.CANCEL:包括一個cancel(取消)按鈕。這個按鈕有一個ID值wx.ID_CANCEL。

wx.NO_DEFAULT:在一個wx.YES_NO對話框中,No(否)按鈕是預設的。

wx.OK:包括一個OK按鈕,這個按鈕有一個ID值wx.ID_OK。

wx.YES_DEFAULT:在一個wx.YES_NO對話框中,Yes按鈕是預設的。這是預設行為。

wx.YES_NO:包括Yes和No按鈕,各自的ID值分别是wx.ID_YES和wx.ID_NO。

wx.MessageDialog的圖示樣式

wx.ICON_ERROR:表示一個錯誤的圖示。

wx.ICON_EXCLAMATION:表示警告的圖示。

wx.ICON_HAND:同wx.ICON_ERROR。

wx.ICON_INFORMATION:資訊圖示,字母i。

wx.ICON_QUESTION:問号圖示。

樣式wx.STAY_ON_TOP将對話框顯示在系統中任何其它視窗的上面,包括系統視窗和wxPython應

用程式視窗。

wx.MessageBox()函數

wx.MessageBox(message, caption="Message", style=wx.OK)

要在你的消息框中顯示大量的文本,你可以使用wxPython特定的類

wx.lib.dialogs.ScrolledMessageDialog,它包含如下的構造函數:

wx.lib.dialogs.ScrolledMessageDialog(parent, msg, caption, 

        pos=wx.wxDefaultPosition, size=(500,300))

這個對話框不使用本地消息框控件,它根據别的wxPython視窗部件來建立一個對話框。它隻顯

示一個OK按鈕,并且沒有更多的樣式資訊。

wx.TextEntryDialog

wx.TextEntryDialog(parent, message, caption="Please enter text", 

    defaultValue="", style=wx.OK | wx.CANCEL | wx.CENTRE, 

    pos=wx.DefaultPosition)

下面這些是使用文本對話框的便利函數:

1、wx.GetTextFromUser()

2、wx.GetPasswordFromUser()

3、wx.GetNumberFromUser()

wx.GetTextFromUser(message, caption="Input text", 

    default_value="", parent=None)

這裡的message, caption, default_value, 和 parent與wx.TextEntryDialog的構造函數中的

一樣。如果使用者按下OK,該函數的傳回值是使用者所輸入的字元串。如果使用者按下Cancel,該函

數傳回空字元串。

如果你希望使用者輸入密碼,你可以使用wx.GetPasswordFromUser()函數:

wx.GetPasswordFromUser(message, caption="Input text", 

這裡的參數意義和前面的一樣。使用者的輸入被顯示為星号,如果使用者按下OK,該函數的傳回值

是使用者所輸入的字元串。如果使用者按下Cancel,該函數傳回空字元串。

最後,你可以使用wx.GetNumberFromUser()要求使用者輸入一個數字:

wx.GetNumberFromUser(message, prompt, caption, value, min=0, 

    max=100, parent=None)

用對話框顯示選項清單 wx.SingleChoiceDialog

有兩個用于單選對話框的便利函數。第一個是wx.GetSingleChoice,它傳回使用者所選的字元串

wx.GetSingleChoice(message, caption, aChoices, parent=None)

第二個是wx.GetSingleChoiceIndex:

wx.GetSingleChoiceIndex(message, caption, aChoices, parent=None)

這個函數與第一個有相同的參數,但是傳回值不同。如果使用者按下OK,則傳回值是所選項的索

引,如果使用者按下Cancel,則傳回值是-1。

在對話框上顯示進度條

wx.ProgressDialog(title, message, maximum=100, parent=None, 

        style=wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)

wx.ProgressDialog的樣式

wx.PD_APP_MODAL:如果設定了這個樣式,進度條對整個應用程式是模式的,這将阻塞所有的

使用者事件。如果沒有設定這個樣式,那麼進度條僅對它的父視窗是模式的。

wx.PD_AUTO_HIDE:進度條将自動隐藏自身直到它達到它的最大值。

wx.PD_CAN_ABORT:在進度條上放上一個Cancel按鈕,以便使用者停止。如何響應來自該對話框

的取消将在以後說明。

wx.PD_ELAPSED_TIME:顯示該對話框已經出現了多長時間。

wx.PD_ESTIMATED_TIME:顯示根據已花的時間、目前的計數值和計數器的最大值所估計出的完

成進度所需的總時間。

wx.PD_REMAINING_TIME:顯示要完成進度所估計的剩餘時間,或(所需總時間-已花時間)。

檔案選擇對話框 wx.FileDialog

wx.FileDialog(parent, message="Choose a file", defaultDir="", 

        defaultFile="", wildcard="*.*", style=0, 

        pos=wx.DefaultPosition)

用于打開檔案的對話框有兩個标記,它們進一步影響對話框的行為。wx.HIDE_READONLY标記灰

化複選框,使使用者以隻讀模式打開檔案。wx.MULTIPLE标記使使用者可以在一個目錄中選擇打開

多個檔案。

使用檔案對話框的函數:

wx.FileSelector(message, default_path="", default_filename="", 

    default_extension="", wildcard="*.*'', flags=0, parent=None, 

    x=-1, y=-1)

message, default_path, default_filename, 和 wildcard參數意義與構造函數的基本相同,

盡管參數的名字不同。flags參數通常被稱作style,default_extension參數是儲存為檔案時

預設的字尾(如果使用者沒有指定字尾的情況下)。如果使用者按下OK,傳回值是字元串形式的路

徑名,如果使用者按下Cancel則傳回一個空字元串。

選擇一個目錄

wx.DirDialog(parent, message="Choose a directory", defaultPath="", 

    style=0, pos = wx.DefaultPosition, size = wx.DefaultSize, 

    name="wxDirCtrl")

字型選擇對話框

wx.FontDialog(parent, data)

顔色對話框

wx.ColourDialog(parent, data=None)

使使用者能夠浏覽圖像

ImageDialog(parent, set_dir=None)

向導

wx.wizard.Wizard(parent, id=-1, title=wx.EmptyString, 

    bitmap=wx.NullBitmap, pos=wx.DefaultPosition)

EVT_WIZARD_CANCEL:當使用者按下Cancel按鈕時産生。該事件可以使用Veto()來否決,這種情況下,對話框将不會消失。

EVT_WIZARD_FINISHED :當使用者按下Finish按鈕時産生。

EVT_WIZARD_HELP:當使用者按下Help按鈕時産生。

EVT_WIZARD_PAGE_CHANGED:在頁面被切換後産生。

EVT_WIZARD_PAGE_CHANGING:當使用者已請求了一個頁面切換時産生,這時頁面還沒有發生切換。這個事件可以被否決(例如,如果頁面上有一個必須被填寫的字段)。

wx.wizard.WizardPageSimple類被當作一個面闆一樣。它的構造函數使你可以設定上一頁和下一頁,如下所示:

wx.wizard.WizardPageSimple(parent=None, prev=None, next=None)

如果你想在構造器中設定它們,你可以使用SetPrev()和SetNext()方法。如果那樣太麻煩,你可以使用wx.wizard.WizardPageSimple_Chain(),它設定兩頁間的連結關系。

向導頁的複雜版:wx.wizard.WizardPage,稍微不同。它沒有顯式地設定前一頁和下一頁,而是使你能夠使用更複雜的邏輯去定義下一步到哪兒。它的構造函數如下:

wx.WizardPage(parent, bitmap=wx.NullBitmap, resource=None)

啟動提示

wx.CreateFileTipProvider(filename, currentTip)

顯示提示的函數是wx.ShowTip():

wx.ShowTip(parent, tipProvider, showAtStartup)

建立菜單的步驟:

·建立菜單欄 wx.MenuBar()

·把菜單欄附加給架構

·建立單個的菜單 wx.Menu(title="", style=0) 然後 Append(menu, title)

·把菜單附加給菜單欄或一個父菜單

·建立單個的菜單項

·把這些菜單項附加給适當的菜單

·為每個菜單項建立一個事件綁定

在菜單欄處理菜單的wx.MenuBar的方法

Append(menu, title):将menu參數添加到菜單欄的尾部(靠右顯示)。title參數被用來顯示

新的菜單。如果成功傳回True,否則傳回False。

Insert(pos, menu, title):将給定的menu插入到指定的位置pos(調用這個函數之後,

GetMenu(pos) == menu成立)。就像在清單中插入一樣,所有後面的菜單将被右移。菜單的索

引以0開始,是以pos為0等同于将菜單放置于菜單欄的左端。使用GetMenuCount()作為pos等同

于使用Append。title被用于顯示名字。函數如果成功則傳回True。

Remove(pos):删除位于pos的菜單,之後的其它菜單左移。函數傳回被删除的菜單。

Replace(pos, menu, title):使用給定的menu,和title替換位置pos處的菜單。菜單欄上的

其它菜單不受影響。函數傳回替換前的菜單。

wx.MenuBar包含一些其它的方法。它們用另外的方式處理菜單欄中的菜單,如表10.2所示。

wx.MenuBar的菜單屬性方法

EnableTop(pos, enable):設定位置pos處的菜單的可用/不可用狀态。如果enable是True,那

麼該菜單是可用的,如果是False,那麼它不可用。

GetMenu(pos):傳回給定位置處的菜單對象。

GetMenuCount():傳回菜單欄中的菜單的數量。

FindMenu(title):傳回菜單欄有給定title的菜單的整數索引。如果沒有這樣的菜單,那麼函

數傳回常量wx.NOT_FOUND。該方法将忽略快捷鍵,如果有的話。

GetLabelTop(pos) 

SetLabelTop(pos, label):得到或設定給定位置的菜單的标簽。

給下拉菜單填加項目

wx.MenuBar的菜單項處理方法

FindMenuItem(menuString,itemString):在一個名為menuString的菜單中查找名為itemString的菜單項。傳回找到的菜單項或wx.NOT_FOUND。

FindItemById(id):傳回與給定的wxPython辨別符相關聯的菜單項。如果沒有,傳回None。

GetHelpString(id)

SetHelpString(id,helpString):用于給定id的菜單項的幫助字元串的擷取或設定。如果沒有這樣的菜單項,那麼get*方法傳回"",set*方法不起作用。

GetLabel(id)

SetLabel(id, label):用于給定id的菜單項的标簽的擷取或設定。如果沒有這樣的菜單項,那麼get*方法傳回"",set*方法不起作用。這些方法隻能用在菜單欄已附加到一個架構後。

wx.Menu的菜單項方法

FindItem(itemString):傳回與給定的itemString相關的菜單項或wx.NOT_FOUND。

FindItemByPosition(pos):傳回菜單中給定位置的菜單項

SetHelpString(id,helpString):與菜單欄的對應方法相同。

SetLabel(id, label):與菜單欄的對應方法相同。

菜單項的外觀屬性

GetBackgroundColour()

SetBackgroundColour(colour):屬性類型是wx.Colour,該set*方法的參數也可以是一個wxPython顔色的名稱字元串。管理項目的背景色。

GetFont()

SetFont(font):項目的顯示字型。類型是wx.Font。

GetTextColour()

SetTextColour(colour):管理顯示在項目中的文本的顔色。類型和背景色的相同。

Sizer

wxPython sizer是一個對象,它唯一的目的就是管理容器中的視窗部件的布局。sizer本身不是一個容器或一個視窗部件。它隻是一個螢幕布局的算法。所有的sizer都是抽象類wx.Sizer的一個子類的執行個體

wxPython中預定義的sizer

Grid:一個十分基礎的網格布局。當你要放置的視窗部件都是同樣的尺寸且整齊地放入一個規則的網格中是使用它。

Flex grid:對grid sizer稍微做了些改變,當視窗部件有不同的尺寸時,可以有更好的結果。

Grid bag:grid sizer系列中最靈活的成員。使得網格中的視窗部件可以更随意的放置。

Box:在一條水準或垂直線上的視窗部件的布局。當尺寸改變時,在控制視窗部件的的行為上很靈活。通常用于嵌套的樣式。可用于幾乎任何類型的布局。

Static box:一個标準的box sizer。帶有标題和環線。

使用一個sizer的三個基本步驟:

·建立并關聯sizer到一個容器。sizer被關聯到容器使用wx.Window的SetSizer(sizer)方法。由于這是一個wx.Window的方法,是以這意味着任何wxPython視窗部件都可以有一個sizer,盡管sizer隻對容器類的視窗部件有意義。

·添加每個孩子到這個sizer。所有的孩子視窗部件需要被單獨添加到該sizer。僅僅建立使用容器作為父親的孩子視窗部件是不夠的。還要将孩子視窗部件添加到一個sizer,這個主要的方法是Add()。Add()方法有一對不同的标記

wx.GridSizer(rows, cols, vgap, hgap)

對sizer添加或移除孩子 

Add()   Add(window, proportion=0, flag=0, border=0, userData=None) 

insert() Insert(index, window, proportion=0, flag=0, border=0, userData=None) 

Prepend() Prepend(window, proportion=0, flag=0, border=0, userData=None) 

Detach() Detach(window)

尺寸調整和對齊行為标記

wx.ALIGN_BOTTOM:按照視窗部件被配置設定的空間(格子)的底部對齊。

wx.ALIGN_CENTER:放置視窗部件,使視窗部件的中心處于其所配置設定的空間的中心。

wx.ALIGN_CENTER_HORIZONTAL:在它所處的格子中,水準居中。

wx.ALIGN_CENTER_VERTICAL :在它所處的格子中,垂直居中。

wx.ALIGN_LEFT:靠着它所處的格子左邊緣。這是預設行為。

wx.ALIGN_TOP:靠着它所處的格子的上邊緣。這是預設的行為。

wx.EXPAND:填滿它所處的格子空間。

wx.FIXED_MINSIZE:保持固定項的最小尺寸。

wx.GROW:與wx.EXPAND相同。但比之少兩個字元,節約了時間。

wx.SHAPED:視窗部件的尺寸改變時,隻在一個方向上填滿格子,另一個方向上按視窗部件原先的形狀尺寸的比列填充。

圖像

從一個檔案載入一個圖像,使用wx.Image的構造函數:

wx.Image(name, type=wx.BITMAP_TYPE_ANY, index=-1)

wxPython支援的圖像檔案格式

處理器類:wx.ANIHandler    類型标記:wx.BITMAP_TYPE_ANI

說明:動畫光标格式。這個處理器隻載入圖像而不儲存它們。

處理器類:wx.BMPHandler 類型标記:wx.BITMAP_TYPE_BMP

說明:Windows和OS/2位圖格式。

處理器類:wx.CURHandle 類型标記:wx.BITMAP_TYPE_CUR

說明:Windows光标 圖示格式。

處理器類:wx.GIFHandler 類型标記:wx.BITMAP_TYPE_GIF

說明:圖形交換格式。由于版權限制,這個處理器不儲存圖像。

處理器類:wx.ICOHandler 類型标記:wx.BITMAP_TYPE_ICO

說明:Windows圖示格式。

處理器類:wx.IFFHandler 類型标記:wx.BITMAP_TYPE_IFF

說明:交換檔案格式。這個處理器隻載入圖像,它不儲存它們。

處理器類:wx.JPEGHandler 類型标記:wx.BITMAP_TYPE_JPEG

說明:聯合圖形專家組格式。

處理器類:wx.PCXHandler 類型标記:wx.BITMAP_TYPE_PCX

說明:PC畫刷格式。當以這種格式儲存時,wxPython計算在這個圖像中的不同顔色的數量。如果可能的話,這個圖像被儲存為一個8位圖像(也就是說,如果它有256種或更少的顔色)。否則它儲存為24位。

處理器類:wx.PNGHandler 類型标記:wx.BITMAP_TYPE_PNG

說明:便攜式網絡圖形格式。

處理器類:wx.PNMHandler 類型标記:wx.BITMAP_TYPE_PNM

說明:隻能載入ASCII或原始的RGB圖像。圖像被該處理器儲存為原始的RGB。

處理器類:wx.TIFFHandler 類型标記:wx.BITMAP_TYPE_TIF

說明:标簽圖像檔案格式。

處理器類:wx.XPMHandler 類型标記:wx.BITMAP_TYPE_XPM

說明:XPixMap格式。

處理器類:自動 類型标記:wx.BITMAP_TYPE_ANY

說明:自動檢測使用的格式,然後調用相應的處理器。

wx.Image的圖像處理方法

ConvertToMono(r, g, b):傳回一個與原尺寸一緻的wx.Image,其中所有顔色值為(r, g, b)的像素顔色改為白色,其餘為黑色。原圖像未改變。

Mirror(horizontally=True):傳回原圖像的一個鏡像圖像。如果horizontally參數是True,那麼鏡像圖像是水準翻轉了的,否則是垂直翻轉了的。原圖像沒有改變。

Replace(r1, g1, b1, r2, g2, b2):改變調用該方法的圖像的所有顔色值為r1, g1, b1的像素的顔色為r2, g2, b2。

Rescale(width, height):改變圖像的尺寸為新的寬度和高度。原圖像也作了改變,并且顔色按比例地調整到新的尺寸。

Rotate(angle, rotationCentre, interpolating=True, offestAfterRotation=None):傳回旋轉原圖像後的一個新的圖像。參數angle是一個浮點數,代表所轉的弧度。rotationCentre是一個wx.Point,代表旋轉的中心。如果interpolating為True,那麼一個較慢而精确的算法被使用。offsetAfterRotation是一個坐标點,表明在旋轉後圖像應該移位多少。任何未被覆寫的空白像素将被設定為黑色,或如果該圖像有一個遮罩色,設定為遮罩色(mask color)。

Rotate90(clockwise=True):按照參數clockwise的布爾值,控制圖像按順或逆時針方向作90度的旋轉。

Scale(width, height):傳回一個原圖像的拷貝,并按比例改變為新的寬度和高度。

如何改變光标

預定義的光标

wx.CURSOR_ARROW:标準的箭頭光标。

wx.CURSOR_ARROWWAIT:一個表示繁忙的光标,它同時顯示标準箭頭和一個沙漏。隻在Windows系統有效。

wx.CURSOR_BLANK:不可見的光标。當你想欺騙使用者時是有用的。

wx.CURSOR_BULLSEYE:一個bullseye cursor(在較大的光标裡面有小的園環)。有時對于精确指向是有用的。

wx.CURSOR_CHAR:一個字元光标。不是在所平台上有效。

wx.CURSOR_CROSS:十字叉絲光标。

wx.CURSOR_HAND:典型的手指型光标。

wx.CURSOR_IBEAM:垂直的I型光标,通常用在一個文本編輯域中。

wx.CURSOR_LEFT_BUTTON:一個帶有左按鍵為按下狀态的滑鼠——用于提示使用者他應該按下左按鍵。不是對所有平台有效。

wx.CURSOR_MAGNIFIER:放大鏡,通常用于表示縮放。

wx.CURSOR_MIDDLE_BUTTON:一個帶有中間按鍵為按下狀态的滑鼠。

wx.CURSOR_NO_ENTRY:一個中間有一個斜線的園環光标。用于表明螢幕中的一個區域是無效的(例如對一個目标的拖放)。

wx.CURSOR_PAINT_BRUSH:像一個畫刷樣的光标。通常用在繪圖程式中。

wx.CURSOR_PENCIL:鋼筆樣光标,常用于繪圖程式中。

wx.CURSOR_POINT_LEFT:左指向箭頭光标。

wx.CURSOR_POINT_RIGHT:右指向箭頭光标。

wx.CURSOR_QUESTION_ARROW:一個帶有問号的箭頭,常用于表示上下文幫助。

wx.CURSOR_RIGHT_ARROW:正如标準的箭頭光标一樣,隻是鏡像化的,以便它指向右邊。

wx.CURSOR_RIGHT_BUTTON:一個右按鍵按下的滑鼠。

wx.CURSOR_SIZENESW:光标的一種,用于表明兩個方向的尺寸調整,光标的傾斜方向是45度(西南到東北方向)。

wx.CURSOR_SIZENS:垂直調整尺寸光标,上下指向。

wx.CURSOR_SIZENWSE:光标的一種,用于表明兩個方向的尺寸調整,光标的傾斜方向是135度。

wx.CURSOR_SIZEWE:水準調整尺寸光标,左右指向。

wx.CURSOR_SIZING:通常的尺寸調整光标,四個方向的箭頭指向。

wx.CURSOR_SPRAYCAN:另一個繪圖用的光标。

wx.CURSOR_WAIT:沙漏等待光标。

wx.CURSOR_WATCH:手表型等待光标。