【Python】 使用者圖形介面GUI wxpython III

來源:互聯網
上載者:User

標籤:frame   ima   span   load   sleep   精度   ...   cti   方便   

wxpython - 更多組件

  我寫到的這些組件可能一來不是很詳細,二來不是最全的,想要更好地用這些組件,應該還是去看看教程和別的樣本。比較簡單的,推薦http://download.csdn.net/album/detail/459 辛星wpython教程

  ■  複選框 CheckBox

  複選框需要對每個單獨的選項構建,常用的構造方法是:CheckBox(parent,id,label,pos,size)

  事件中的EVT_CHECKBOX是指被Bind的checkbox被勾選或取消時發生的事件

  CheckBox常用的類方法有:

    IsChecked()  返回True或者False

    Set/GetValue()  設定/擷取狀態,也是True或者False

    Set/GetLabel()  設定/擷取複選框的文本

  ■  單選框 RadioButton

  構造方法:RadioButton(parent,id,label,pos,size,style=RB_GROUP或者None)

  單選框的構造方法和複選框是類似的,但是有一個style,其作用是用來分組。一個單選框組裡面可以有若干個單選框,但是一個組只能有一個單選框被選中。令style=wx.RB_GROUP來使得這個單選框成為一個新的組的第一個成員,以後構建的成員也預設全部都是這個組的成員直到有一個新的單選框又開了一個RB_GROUP。

  EVT_RADIOBUTTON指被Bind的RadioButton被選中時發生的事件

  RadioButton常用的類方法和複選框是類似的:

    Set/GetValue()  值也是True/False

    Set/GetLabel()  

  ■  進階單選框 RadioBox

  當選項比較多時,一個個加RadioButton有點繁瑣,於是可以用RadioBox來構造。另外,從外觀上來說,RadioBox會在所有選項的外圍加一條細線把不同組的選項給分割開。另外RBox也有一些統一管理選項的方法,比較方便。

  構造方法:RadioBox(parent,id,label,pos,size,list,N,RA_SPECIFY_ROWS/RA_SPECIFY_COLS)。其他都是差不多的,主要是幾點,label的指的是寫在框框上面的文字而不是選項的文字,list給出了所有選項的文字,N是一個自然數,配合後面的參數是ROWS還是COLS來指出這個RBox有幾行和幾列。

  和其他組件不太一樣的是,上述參數中,pos和size是必須的,否則會報錯,另外ROWS和COLS選一個寫就好了,程式會按照指出的行數或列數自動來調整另一個。size指的是框框的大小,並不受到有多少選項的影響。

  稍微有點複雜,就展示一個執行個體:

class MyFrame(Frame):    def __init__(self,pos,size):        Frame.__init__(self,None,-1,pos=pos,size=size)        totalPanel = Panel(self,-1)        totalSizer = BoxSizer(VERTICAL)        oneSizer = BoxSizer(HORIZONTAL)        self.rb = RadioBox(totalPanel,-1,"RadioBox",(0,0),(200,100),["choiceA","choiceB","choiceC","choiceD"],2,RA_SPECIFY_ROWS)        oneSizer.Add(self.rb)        totalSizer.Add(oneSizer,flag=ALIGN_CENTER)        totalPanel.SetSizer(totalSizer)    def test(self,event):        print self.radio1.IsEnabled()if __name__ == ‘__main__‘:    app = App()    myFrame = MyFrame((200,200),(300,300))    myFrame.Show()    app.MainLoop()

 

  介面:

  

  EVT_RADIOBOX是RadioBox的事件,指的是當Box中有任意一選項被選中的事件。

  其類方法也很豐富:

    GetCount()  返回框中選項的總數

    Get/SetItemLabel(n)  返回/設定給出的初始化列表中索引為n的那項的label

    FindString(...)  返回相關Label的選項的索引,若沒找到相關string就返回-1

    GetSelection()  返回選中項的索引

    SetSelection(n)  使索引為n的選項被選中

    GetStringSelection()  返回選中項的Label

    EnableItem(n,flag)  使得索引為n的選項失效或有效,flag是True/False

  

  ■  下拉選項

  下拉選項也是比較常用的一個組件,構造方法:Choice(parent,id,pos,size,list)。和RBox一樣,pos和size也是必須的,list提供了選項做成的列表。

  類方法也有GetStringSelection(),GetSelection(),GetCount()等等,就不再重複說了。總之腦補一下就好

 

  ■  其他選擇結構還有列表框ListBox,複選列表框CheckListBox等等,不多說了,想用可以查教程

 

  ■  進度條

  用Gauge可以在wx中加入進度條。常見構造方法:Gauge(parent,id,range=100,pos,size,style=GA_HORIZONTAL)

  range是指進度條載入滿時指定的一個終點值,程式將根據這個值來確認當前進度條應該有多滿。style指定了載入的方式是橫向載入還是豎向載入,豎直載入的話要GA_VERTICAL

  和其他一些組件不同的是,單單把進度條構造出來放在視窗裡還是不夠的,這樣的進度條是靜態。應該把進度條和某個過程結合起來,通過SetValue(..)方法來更新進度條的載入情況。比如下面這個執行個體

count = 0while count<=100:    self.gauge.SetValue(count)    count += 1    time.sleep(0.1)

  運行到上面這段語句的時候,會每隔0.1秒更新百分之一的進度條,所以10秒之後進度條能讀完。

  精度條還有一個EVT_IDLE事件,好像是說只要進度條沒有在往前讀,就會觸發。但是我覺得這個不是很科學,不知道拿它來幹什麼。

 

【Python】 使用者圖形介面GUI wxpython III

聯繫我們

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