今天正式開始學習wxPython,基於對類的不熟悉,理解有點生硬,但仍是作了些筆記。python
一個wxpython程序必須有一個application(wx.App)對象和至少一個frame(wx.Frame)對象。而用於填充frame的則是一系列的wx.Window的子類,wx.Window的子類均可以擁有wx.Control的子類,在上圖中,panel就是最多見的wx.Window的子類之一,而wx.StaticText和wx.TextCtrl則是最多見的wx.Control之一。windows
經常使用的如wx.Panel、wx.StatusBar、wx.SplitterWindow、wx.PopupWindow、wx.TopLevelWindow,以上這些類都直接繼承了_core.Window,在_windows.py中實現。除此以外還有MenuBar、Control,在_core.py中實現。多線程
Python的命名具備很好的見名知意效果,而須要備註一筆的是,wx.Frame和wx.Dialog實際上就是wx.TopLevelWindow的子類,其中wx.Frame的實例能夠經過app
SetMenuBar、GetMenuBar、框架
CreateStatusBar、GetStatusBar、SetStatusBar、SetStatusText、ide
CreateToolBar、GetToolBar、SetToolBar函數
等方法與菜單欄、狀態欄和工具欄進行交互,其中wx.ToolBar屬於wx.Controls。工具
比較少用的則有wx.MDIClientWindow、wx.SashWindow、wx.SplashScreenWindow、wx.PyWindow,這些也都是直接繼承了_core.Window,在_windows.py中實現。佈局
他們是:學習
wx.ToolBarBase、wx.ListCtrl、wx.TreeCtrl、wx.GenericDirCtrl、wx.PyControl、wx.DatePickerCtrlBase、wx.HyperlinkCtrl、wx.PickerBase、wx.CollapsiblePane、wx.SearchCtrlBase、wx.InfoBar、wx.AnyButton、wx.CheckBox、wx.Gauge、wx.StaticBox、wx.StaticLine、wx.StaticText、wx.StaticBitmap、wx.ScrollBar、wx.SpinButton、wx.SpinCtrl、wx.SpinCtrlDouble、wx.RadioBox、wx.RadioButton、wx.Slider。
見:WxPython In Action/ChapterThree
在wxpython中,表明事件的是事件對象——wx.Event或其子類。
wx.Event的子類有
wx.CloseEvent:當關閉一個框架的時候被觸發
wx.CommandEvent:這是與窗口控件的交互事件,包括菜單欄選擇、單擊一個button等等,這應該是涉及最廣的
wx.KeyEvent:鍵盤按鍵事件
wx.MouseEvent:鼠標事件
wx.PaintEvent:當窗口內容須要被重畫時觸發
wx.SizeEvent:窗口大小或佈局
wx.TimerEvent:由類wx.Timer類建立,是按期的事件
因爲wxPython被用於開發桌面軟件而非Android/iOS,咱們的操做都是經過鼠標完成。因此頗有必要弄清楚wxPython的鼠標事件都有哪些,鼠標事件一共有14個:
wx.EVT_LEFT_DOWN
wx.EVT_LEFT_UP
wx.EVT_LEFT_DCLICK
wx.EVT_MIDDLE_DOWN
wx.EVT_MIDDLE_UP
wx.EVT_MIDDLE_DCLICK
wx.EVT_RIGHT_DOWN
wx.EVT_RIGHT_UP
wx.EVT_RIGHT_DCLICK
wx.EVT_MOTION
wx.ENTER_WINDOW
wx.LEAVE_WINDOW
wx.EVT_MOUSEWHEEL
wx.EVT_MOUSE_EVENTS
EVT_COMMAND(id, event, func)
EVT_COMMAND_RANGE(id1, id2, event, func)
EVT_BUTTON(id, func)
EVT_CHECKBOX(id, func)
EVT_MENU(id, func)
EVT_COMMAND_LEFT_CLICK(id, func)
EVT_COMMAND_LEFT_DCLICK(id, func)
EVT_COMMAND_RIGHT_CLICK(id, func)
EVT_COMMAND_SET_FOCUS(id, func)
EVT_COMMAND_KILL_FOCUS(id, func)
EVT_COMMAND_ENTER(id, func)
特色:一、基於控件的座標擺放控件,二、簡單直觀,方法單一,三、不能隨窗口的改變而調整位置
靜態文本:wx.StaticText
文本域:wx.TextCtrl
按鈕:wx.Button
單選與複選按鈕:wx.CheckBox / wx.RadioButton
列表框:wx.ListBox
圖片:wx.StaticBitmap
BoxSizer
GridSizer
FlexGridSizer
GridBagSizer
要點:一、不使用多線程可能會致使圖形界面卡死,
二、更高效率,更多任務,
三、thread.start_new_thread(函數名,(參數1,參數2,...))
四、使用Threading模塊建立線程
按鈕點擊、文本域內容的改變、鼠標滑過、鍵盤按下