wxPython常用控制項

来源:http://www.cnblogs.com/guyuyun/archive/2017/07/02/7077612.html
-Advertisement-
Play Games

wxPython是一套基於Python的GUI,可用Python製作圖形化界面程式。 本文內容為根據電子書“wxPython實戰(中文版)高清.pdf”整理,若有錯,歡迎指正。 註:雖然控制項可以使用pos參數指定位置,但推薦使用Sizer佈局控制項對應用程式整體進行佈局,佈局控制項的詳細方法可以參考電子 ...


wxPython是一套基於Python的GUI,可用Python製作圖形化界面程式。

本文內容為根據電子書“wxPython實戰(中文版)高清.pdf”整理,若有錯,歡迎指正。

:雖然控制項可以使用pos參數指定位置,但推薦使用Sizer佈局控制項對應用程式整體進行佈局,佈局控制項的詳細方法可以參考電子書“wxPython實戰(中文版)高清.pdf”或網上自行下載相關書籍。


 

1. wx.StaticText:顯示靜態文本控制項

  構造函數:wx.StaticText(parent, id, label, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, name=”staticText”)

  例子: center_text = wx.StaticText(panel, -1, ”align center”, (100, 50), (160, -1), wx.ALIGN_CENTER)  # 居中對齊的文本(label中可以使用“\n”等控制文本顯示的轉義字元。)

  參數說明

  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()改變文本之後,靜態文本控制項不將自我調整尺寸

2. TextCtrl:單行或多行文本輸入控制項(預設單行,多行可以使用樣式wx.TE_MULTILINE/wx.TE_RICH2/wx.TE_RICH)

  構造函數:wx.TextCtrl(parent, id, value = ””, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name=wx.TextCtrlNameStr)

  例子:input_text = wx.TextCtrl(panel, -1, ”I’ve entered some text!”, size=(175, -1))

  單行文本樣式

  wx.TE_CENTER:控制項中的文本居中
  wx.TE_LEFT:控制項中的文本左對齊,預設行為
  wx.TE_NOHIDESEL:文本始終高亮顯示,只適用於Windows
  wx.TE_PASSWORD:不顯示所鍵入的文本,代替以星號顯示
  wx.TE_PROCESS_ENTER:如果使用了這個樣式,那麼當用戶在控制項內按下回車鍵時,一個文本輸入事件被觸發。否則,按鍵事件內在的由該文本控制項或該對話框管理
  wx.TE_PROCESS_TAB:如果指定了這個樣式,那麼通常的字元事件在Tab鍵按下時創建(一般意味一個製表符將被插入文本)。否則,tab由對話框來管理,通常是控制項間的切換
  wx.TE_READONLY:文本控制項為只讀,用戶不能修改其中的文本
  wx.TE_RIGHT:控制項中的文本右對齊

  多行或豐富文本樣式

  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:對於太長的行,以單詞為界換行。許多操作系統會忽略該樣式

  通用文本處理方法

  AppendText(text):在尾部添加文本
  Clear():重置控制項中的文本為“”,並且生成一個文本更新事件
  EmulateKeyPress(event):產生一個按鍵事件,插入與事件相關聯的控制符,就如同實際的按鍵發生了
  GetInsertionPoint()/SetInsertionPoint(pos)/SetInsertionPointEnd():得到或設置插入點的位置,位置是整型的索引值。控制項的開始位置是0
  GetRange(from, to):返回控制項中位置索引範圍內的字元串。
  GetSelection():以元組的形式返回當前所選擇的文本的起始位置的索引值(開始,結束)
  GetStringSelection():得到所選擇的字元串
  SetSelection(from, to):設置選擇的文本
  GetValue():返回控制項中所有的字元串
  SetValue(value):改變控制項中的全部文本
  Remove(from, to):刪除指定範圍的文本
  Replace(from, to, value):用給定的值替換掉指定範圍內的文本(這可以改變文本的長度)
  WriteText(text):類似於AppendText(),只是寫入的文本被放置在當前的插入點

  多行文本處理方法

  GetDefaultStyle()/SetDefaultStyle(style):設置文本的字體和顏色等顯示樣式
  GetLineLength(lineNo):返回指定行的長度的整數值
  GetLineText(lineNo):返回指定行的文本
  GetNumberOfLines():返回控制項中的行的數量。對於單行,返回1
  IsMultiLine()/IsSingleLine():布爾類型的方法,確定控制項的狀態
  PositionToXY(pos):指定文本內的一個整數值位置,返回以元組(列,行)形式的索引位置。列和行的索引值均以0作為開始
  SetStyle(start, end,style):立即改變指定範圍內文本的樣式
  ShowPosition(pos):引起一個多行控制項的滾動,以便觀察到指定位置的內容
  XYToPosition(x, y):與PositionToXY(pos)相反——指定行和列,返回整數值位置

3. wx.Button:按鈕控制項(控制項被敲擊時產生一個EVT_BUTTON類型的命令事件)

  構造函數:wx.Button(parent, id, label, pos, size=wxDefaultSize, style=0, validator, name=”button”)

  例子:button = wx.Button(panel, -1, ”Hello”, pos=(50, 20))

4. wx.CheckBox:覆選框控制項(產生一個屬於它自己EVT_CHECKBOX的命令事件)

  構造函數:wx.CheckBox(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name=”checkBox”)

  例子:wx.CheckBox(panel, -1, ”Alpha”, (35, 40), (150, 20))

  處理方法:GetValue()/SetValue(state)/IsChecked():獲取和設置控制項的開關狀態(值或參數都是布爾值)

5. RadioButton:單選按鈕控制項(產生一個EVT_RADIOBUTTON事件)

  構造函數:wx.RadioButton(parent, id, label, pos=wx.DefaultPosition    size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name=”radioButton”)

  例子:radio = wx.RadioButton(panel, -1, ”Elmo”, pos=(20, 50), style=wx.RB_GROUP)

  樣式:wx.RB_GROUP樣式聲明該按鈕位於一組單選按鈕開頭(處於選中狀態)。當組中的一個按鈕被選中時,先前被選中的按鈕被切換到未選中狀態。在一個單選按鈕使用wx.RB_GROUP被創建後,所有後來的被添加到相同父視窗部件中的單選按鈕都被添加到同一組,直到另一單選按鈕使用wx.RB_GROUP被創建,並開始下一個組

6. wx.RadioBox:單選框控制項(一個框中包含一組單選按鈕,產生一個EVT_RADIOBOX事件)

  構造函數:wx.RadioBox(parent, id, label, pos=wx.DefaultPosition, size=wxDefaultSize, choices=None, majorDimension=0, style=wx.RA_SPECIFY_COLS, validator=wx.DefaultValidator, name=”radioBox”)

  例子

  sampleList = [‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’, ’six’, ’seven’, ’eight’]  # 單選按鈕的label
  wx.RadioBox(panel, -1, ”A Radio Box”, (10, 10), wx.DefaultSize, sampleList, 2, wx.RA_SPECIFY_COLS)  # 第三個參數是單選框的label,倒數第二個參數是指定每行顯示2個單選按鈕

  

  樣式:wx.RA_SPECIFY_COLS/wx.RA_SPECIFY_ROWS:指定單選按鈕顯示的維度(可以根據這個樣式標記來指定顯示多少列或行)

  處理方法

  EnableItem(n, flag):flag參數是一個布爾值,它用於使索引為n的按鈕有效或無效。要使整個框立即有效,使用Enable()
  FindString(string):根據指定的標簽返回相關按鈕的整數索引值,如果標簽沒有發現則返回-1
  GetCount():返回框中按鈕的數量
  GetItemLabel(n)/SetItemLabel(n, string):返回或設置索引為n的按鈕的字元串標簽
  GetSelection():返回當前所選擇的單選按鈕的整數索引
  GetStringSelection():返回當前所選擇的按鈕的字元串標簽
  SetSelection(n):設置當前所選擇的單選按鈕的整數索引
  SetStringSelection(string):設置所選擇的按鈕的字元串標簽
  ShowItem(item, show):show參數是一個布爾值,用於顯示或隱藏索引為item的按鈕

7. wx.ListBox:列表框控制項

  構造函數:wx.ListBox(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name=”listBox”)

  例子

  sampleList = [‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’,’six’, ’seven’, ’eight’, ’nine’, ’ten’, ’eleven’,’twelve’, ’thirteen’, ’fourteen’]
  listBox = wx.ListBox(panel, -1, (20, 20), (80, 120), sampleList, wx.LB_SINGLE)

  

  樣式

  wx.LB_EXTENDED:用戶可以通過使用shift並敲擊滑鼠來選擇一定範圍內的連續的選項,或使用等同功能的按鍵
  wx.LB_MULTIPLE:用戶可以一次選擇多個選項(選項可以是不連續的)。實際上,在這種情況下,列表框的行為就像是一組覆選框
  wx.LB_SINGLE:用戶一次只能選一個選項。實際上,在這種情況下,列表框的行為就像是一組單選按鈕
  wx.LB_SORT:它使得列表中的元素按字母順序排序
  wx.LB_ALWAYS_SB:列表框將始終顯示一個垂直的滾動條,不管有沒有必要
  wx.LB_HSCROLL:如果本地控支持,那麼列表框在選擇項太多時,將創建一個水平滾動條
  wx.LB_HSCROLL:列表框只在需要的時候顯示一個垂直的滾動條。這是預設樣式

  事件:EVT_LISTBOX事件在當列表中的一個元素被選擇時觸發(即使它是當前所選擇的元素)。如果列表被雙擊,EVT_LISTBOX_DCLICK事件發生

  處理方法

  Append(item):把字元串項目添加到列表框的尾部
  Clear():清空列表框
  Delete(n):刪除列表框中索引為n的項目
  Deselect(n):在多重選擇列表框中,導致位於位置n的選項取消選中。在其它樣式中不起作用
  FindString(string):返回給定字元串的整數位置,如果沒有發現則返回-1  
  GetCount():返回列表中字元串的數量
  GetSelection():得到當前選擇項的整數索引(單選列表)
  GetStringSelection():返回當前選擇的字元串(單選列表)
  GetSelections():返回包含所選項目的整數位置的元組(多選列表)
  SetSelection(n, select):設置指定索引選項的狀態
  SetStringSelection(string, select):設置指定字元串選項的狀態
  GetString(n):得到位置n處的字元串
  SetString(n, string):設置位置n處的字元串
  InsertItems(items, pos):插入參數items中的字元串列表到該列表框中pos參數所指定的位置前。位置0表示把項目放在列表的開頭
  Selected(n):返回對應於索引為n的項目的選擇狀態的布爾值
  Set(choices):重新使用choices的內容設置列表框

8. wx.CheckListBox:覆選框和列表框的結合的控制項(傳進去的選擇項為覆選框列表)

  構造函數和方法:其構造函數和大多數處理方法與列表框控制項的相同

  

  新事件:它有一個新的事件:wx.EVT_CHECKLISTBOX,它在當列表中的一個覆選框被敲擊時觸發

  新方法:它有兩個管理覆選框的新的方法:Check(n, check)設置索引為n的項目的選擇狀態,IsChecked(item)在給定的索引的項目是選中狀態時返回True

9. wx.Choice:下拉列表框控制項(它有自己的命令事件:EVT_CHOICE)

  構造函數:wx.Choice(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name=”choice”)

  例子:wx.Choice(panel, -1, (85, 18), choices=[‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’, ’six’, ’seven’, ’eight’])

  

  方法:與列表框wx.ListBox設為單選樣式時的方法大多都適用於此控制項

10. wx.FileDialog:文件選擇對話框控制項

  構造函數:wx.FileDialog(parent, message=”Choose a file”, defaultDir=””, defaultFile=””, wildcard=”*.*”, style=0, pos=wx.DefaultPosition)

  例子:dialog = wx.FileDialog(None, ”Choose a file”, os.getcwd(), ””, wildcard, wx.OPEN)  # os.getcwd()獲取當前工作目錄

  

  樣式

  wx.OPEN:打開並選擇文件
  wx.SAVE:用於保存文件
  wx.HIDE_READONLY標記灰化覆選框,使用戶以只讀模式打開文件
  wx.MULTIPLE標記使用戶可以在一個目錄中選擇打開多個文件
  wx.OVERWRITE_PROMPT:保存文件時,如果有相同的文件存在,則提示用戶是否覆蓋
  wx.CHANGE_DIR:可改變應用程式的工作目錄為所選文件所在的目錄,這使得下次文件對話框打開在相同的目錄,而不需要應用程式再在別處存儲該值

  處理方法

  文件對話框的屬性directory,filename,style,message,和wildcard是可以通過方法來得到和設置的,這些方法使用Get/Set命名習慣

  在用戶退出對話框後,如果返回值是wx.OK,那麼你可以使用方法GetPath()來得到用戶的選擇,該函數的返回值是字元串形式的文件全路徑名
  如果對話框是一個使用了wx.MULTIPLE標記的打開對話框,則用GetPaths()代替GetPath(),該方法返迴路徑字元串的一個Python列表

11. wx.DirDialog:目錄或文件夾選擇對話框控制項

  構造函數:wx.DirDialog(parent, message=”Choose a directory”, defaultPath=””, style=0, pos = wx.DefaultPosition, size = wx.DefaultSize, name=”wxDirCtrl”)

  例子:dialog = wx.DirDialog(None, ”Choose a directory:”, style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)

  

  樣式:wx.DD_NEW_DIR_BUTTON給對話框一個用於創建目錄的一個按鈕

  處理方式:path,message,和style屬性都有相應的get*和set*方法,你可以使用GetPath()方法來在對話框被調用後獲取用戶的選擇

12. wx.MessageDialog:消息對話框控制項(使用ShowModal()來顯示對話框並返回交互結果)

  構造函數:wx.MessageDialog(parent, message, caption=”Message box”, style=wx.OK | wx.CANCEL, pos=wx.DefaultPosition)

  例子:dlg = wx.MessageDialog(None, ”Is this explanation OK?”, ’A Message Box’, wx.YES_NO | wx.ICON_QUESTION)

  

  樣式

  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.ICON_ERROR:表示一個錯誤的圖標
  wx.ICON_EXCLAMATION:表示警告的圖標
  wx.ICON_HAND:同wx.ICON_ERROR
  wx.ICON_INFORMATION:信息圖標,字母i
  wx.ICON_QUESTION:問號圖標

  便利函數:wx.MessageBox,例子:wx.MessageBox(message, caption=”Message”, style=wx.OK),用法及樣式與類 wx.MessageDialog差不多

13. wx.TextEntryDialog:簡單輸入對話框控制項(使用ShowModal()顯示對話框並返回交互結果)

  構造函數:wx.TextEntryDialog(parent, message, caption=”Please enter text”, defaultValue=””, style=wx.OK | wx.CANCEL | wx.CENTRE, pos=wx.DefaultPosition)(message參數是顯示在對話框中的文本提示,而caption顯示在標題欄中。defaultValue顯示在文本框中的預設值。style可以包括wx.OK和wx.CANCEL,它顯示適當的按鈕)

  例子:dialog = wx.TextEntryDialog(None, ”What kind of text would you like to enter?”, ”Text Entry”, ”Default Value”, style=wx.OK|wx.CANCEL)

  

  樣式:幾個wx.TextCtrl的樣式也可以用在這裡。最有用的應該是wx.TE_PASSWORD,它掩飾所輸入的真實密碼。你也可以使用wx.TE_MULTILINE來使用戶能夠在對話框中輸入多行文本,也可以使用wx.TE_LEFT, wx.TE_CENTRE, 和 wx.TE_RIGHT來調整所輸入的文本的對齊位置

  便利函數:wx.GetTextFromUser()、wx.GetPasswordFromUser()、wx.GetNumberFromUser(), 可以指定對話框的輸入值的類型

14. wx.列表對話框控制項

  構造函數:wx.SingleChoiceDialog(parent, message, caption, choices, clientData=None, style=wx.OK | wx.CANCEL | wx.CENTRE, pos=wx.DefaultPosition)

  例子:dialog = wx.SingleChoiceDialog(None, ”Pick A Word”, ”Choices”, [“Alpha”, ”Baker”, ”Charlie”, ”Delta”])

  

  處理方法

  SetSelection(selection):設置它的預設選項,參數selection是選項的索引值
  GetSelection():返回所選項的索引值
  GetStringSelection():回實際所選的字元串

15. wx.ProgressDialog:進度條對話框控制項

  構造函數:wx.ProgressDialog(title, message, maximum=100, parent=None, style=wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)

  例子:dialog = wx.ProgressDialog(“A progress box”, ”Time remaining”, progressMax, style=wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)

  

  樣式

  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:顯示要完成進度所估計的剩餘時間,所需總時間-已花時間

  處理方法:它的唯一的方法Update(value,newmsg=””),value參數是進度條的新的內部的值,調用update將導致進度條根據新的計數值與最大計算值的比例重繪。如果使用可選的參數newmsg,那麼進度條上的文本消息將變為該字元串,這讓你可以給用戶一個關於當前進度的文本描述。這個Update()方法通常返回True,但是,如果用戶通過Cancel按鈕已經取消了該對話框,那麼下次的Update()將返回False。這是你響應用戶的取消請求的機會,要檢測用戶的取消請求,我們建議你儘可能頻繁地Update()

16. wx.GridSizer:簡單佈局控制項

  構造函數:wx.GridSizer(rows, cols, vgap, hgap)(rows和cols是整數,它們指定了網格的尺寸(行數和列數),vgap和hgap使你可以決定視窗控制項間的間隔的多少)

  :參數rows, cols, vgap, hgap都有各自的get*和set*方法:GetRows(), SetRows(rows), GetCols(),SetCols(cols), GetVGap(), SetVGap(gap), GetHGap(), 和SetHGap(gap) 

.  

  處理方法

  Add(window, proportion=0, flag=0, border=0, userData=None)  # 末尾添加一個視窗部件
  Add(sizer, proportion=0, flag=0, border=0, userData=None)  # 末尾添加一個Sizer
  Add(size, proportion=0, flag=0, border=0, userData=None)  # 末尾添加一個空白控制項

  Insert(index, window, proportion=0, flag=0, border=0, userData=None)   # 插入一個視窗部件
  Insert(index, sizer, proportion=0, flag=0, border=0, userData=None)   # 插入一個Sizer
  Insert(index, size, proportion=0, flag=0, border=0, userData=None)  # 插入一個空白控制項

  Prepend(window, proportion=0, flag=0, border=0, userData=None)   # 開頭添加一個視窗部件
  Prepend(sizer, proportion=0, flag=0, border=0, userData=None)  # 開頭添加一個Sizer
  Prepend(size, proportion=0, flag=0, border=0, userData=None)   # 開頭添加一個空白控制項

  Detach(window)   # 移除一個視窗部件
  Detach(sizer)   # 移除一個Sizer
  Detach(index)  # 移除一個控制項

  使用方法GetSize()和 GetPosition()來得到sizer的當前尺寸和位置——這個位置是sizer相對於它所關聯的容器的
  調用SetDimension(x, y, width, height)方法來指定一個sizer的尺寸,這樣sizer將根據它的新尺寸和位置重新計算它的孩子的尺寸
  SetMinSize(width, height)和SetSizeHints(minW, minH, maxW, maxH)來設置最小尺寸,第二個方法使你也能夠指定一個最大尺寸,GetMinSize()來訪問整個sizer的最小尺寸
  設置一個孩子的最小尺寸:SetItemMinSize(window, size),SetItemMinSize(sizer, size),SetItemMinSize(index, size)
  設置控制項邊框:Add(window, 0, wx.ALL | wx.EXPAND, 5), 樣式有wx.BOTTOM、wx.LEFT、wx.RIGHT、wx.TOP、wx.ALL, wx.EXPAND表示擴展,即除去邊框外控制項間的間隔還是會保持原來的大小
  尺寸與對齊樣式

  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:視窗部件的尺寸改變時,只在一個方向上填滿格子,另一個方向上按視窗部件原先的形狀尺寸的比列填充

17. 其他佈局控制項

  wx.FlexGridSizer(rows, cols, vgap, hgap):可以指定每行和每列各自的尺寸

    指定行和列是否可擴展:AddGrowableCol(idx, proportion=0),AddGrowableRow(idx, proportion=0)

  

  wx.GridBagSizer(vgap=0, hgap=0):可以添加部件到指定單元格,以及單元格可以跨行和列

    Add方法:pos參數代表sizer中的視窗部件要賦予的單元格,span參數代表視窗部件應該占據的行和列的數量

    Add(window, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
    Add(sizer, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
    Add(size, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
    AddItem(item)

  

  wx.BoxSizer(orient):orient可以是wx.VERTICAL或wx.HORIZONTAL, 即只能在橫向或縱向上添加部件,擴展也只能在一個方向上擴展

  

  

  wx.StaticBoxSizer(box, orient):提供一個邊框和文本標簽,orient是方向,box是一個wx.BoxSizer

  

19. 綁定事件:Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY), event是事件類型,handler通常是一個方法或函數

  例子:self.Bind(wx.EVT_BUTTON, self.OnClick, button),將一個OnClick方法(自己定義的)綁定到按鈕button(自己定義的)上,事件類型為wx.EVT_BUTTON按鈕事件

18. wxPython簡單應用編程框架示例

 1 import wx
 2 
 3 
 4 class NewFrame(wx.Frame):
 5     def __init__(self):
 6         wx.Frame.__init__(self, None, -1, 'Title', size=(100, 200))
 7         panel = wx.Panel(self, -1)
 8         button = wx.Button(panel, -1, ”Close”, pos=(130, 15), size=(40, 40))
 9         self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)  # 綁定按鈕事件
10         ...
11 
12     def OnCloseMe(self, event):
13         self.Close(True)  # Close方法可能關閉後在後臺會繼續運行,通過任務管理器可查看
14     
15     def exit(self):
16         wx.Exit()  # 退出應用程式
17 
18 
19 if __name__ == '__main__':
20     newApp = wx.PySimpleApp()
21     newFrame = NewFrame()
22     newFrame.Show()
23     newApp.MainLoop()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 反射是.NET中的重要機制,通過反射,可以在運行時獲得程式或程式集中每一個類型(包括類、結構、委托、介面和枚舉等)的成員和成員的信息。有了反射,即可對每一個類型瞭如指掌。另外我還可以直接創建對象,即使這個對象的類型在編譯時還不知道。 Anker_張(博客園)http://www.cnblogs.co ...
  • 剛做了一個小改動,需要在微信端顯示另外一個網站中通過富文本編輯後的信息,當然其中包括一些圖片內容。 其他的顯示都沒有問題,唯獨照片無法正常顯示,一直都是破碎的圖片樣式。 經過調試發現,圖片的顯示地址一直為另外一個網站的hosturl+path,然後發現資料庫中富文本的內容只有path,也沒有註明ho ...
  • 期望: 1.球體接觸到框體後反彈 2.設置速度按鍵,按下後改變球體速度、顏色狀態 具體實現: ...
  • 大家都知道main方法的參數就是一個數組類型的,那麼它其實也是可以改成不定參數類型。我試了試,並調用了一些彈出來的方法。 嗯,我把Sting後面的“[ ]”換成了三個點(...),這三個點代表Java中的可變數組參數。可變的參數類型(variable argument type),也稱為不定參數類型 ...
  • 項目中需要對Excel進行操作,把數據中的數據寫入到Excel文件中。在數據量大的情況下,操作Excel是一件費時的操作。 但是執行到下列代碼時就會出現空指針的情況: 第四行返回的workbooks指針是一個空指針,無法進行向下的Excel操作。這是因為QAxObject對象是預設在單線程下使用, ...
  • 索引 簡述 準備 示例 效果圖 結語 簡述 我在使用opencv2或3的時候想要在圖片上添加中文文字,需要去下載Freetype庫,編譯好鏈接到opencv庫中才能中文的輸出。網上大部分在圖片中插入中文的教程還是win+vs的配置教程。像我這種win下有環境,linux下有環境的人來說,想要同步代碼 ...
  • 1.1 庫的概念 在我看來,庫是已經寫好的、成熟的、可復用的代碼。每個程式都需要依賴很多底層庫,不可能每個人的代碼從零開始編寫代碼,因此庫的存在具有非常重要的意義。 在我們的開發的應用中經常有一些公共代碼是需要反覆使用的,就把這些代碼編譯為庫文件。 庫可以簡單看成一組目標文件的集合,將這些目標文件經 ...
  • 在Java中,面向對象編程有三大特性:封裝、繼承、多態。 先來說說封裝。 封裝,顧名思義,就是通過抽象數據類型(即ADT,一種為了將數據類型和可能在該數據類型上進行操作而定義的)將數據以及基於數據的操作封裝在一起,使之成為獨立的“實體”。 首先先來看一個Person類: 對於封裝的思想,我們需要盡可 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...