wxPython學習筆記(初識)

今天正式開始學習wxPython,基於對類的不熟悉,理解有點生硬,但仍是作了些筆記。python

一、是什麼組成了一個wxpython程序?

一個wxpython程序必須有一個application(wx.App)對象和至少一個frame(wx.Frame)對象。而用於填充frame的則是一系列的wx.Window的子類,wx.Window的子類均可以擁有wx.Control的子類,在上圖中,panel就是最多見的wx.Window的子類之一,而wx.StaticText和wx.TextCtrl則是最多見的wx.Control之一。windows

1)經常使用的wx.Window的子類有哪些?

經常使用的如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。工具

2)其餘的wx.Window子類還有哪些?

比較少用的則有wx.MDIClientWindow、wx.SashWindow、wx.SplashScreenWindow、wx.PyWindow,這些也都是直接繼承了_core.Window,在_windows.py中實現。佈局

3)wx.Control的子類有哪些?

他們是:學習

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 

1)wxpython有哪些事件?

在wxpython中,表明事件的是事件對象——wx.Event或其子類。

wx.Event的子類有

wx.CloseEvent:當關閉一個框架的時候被觸發

wx.CommandEvent:這是與窗口控件的交互事件,包括菜單欄選擇、單擊一個button等等,這應該是涉及最廣的

wx.KeyEvent:鍵盤按鍵事件

wx.MouseEvent:鼠標事件

wx.PaintEvent:當窗口內容須要被重畫時觸發

wx.SizeEvent:窗口大小或佈局

wx.TimerEvent:由類wx.Timer類建立,是按期的事件

2)最經常使用的事件是鼠標事件

因爲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

3)涉及最廣的事件是命令事件

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)

4)絕對佈局

特色:一、基於控件的座標擺放控件,二、簡單直觀,方法單一,三、不能隨窗口的改變而調整位置

靜態文本:wx.StaticText

文本域:wx.TextCtrl

按鈕:wx.Button

單選與複選按鈕:wx.CheckBox / wx.RadioButton

列表框:wx.ListBox

圖片:wx.StaticBitmap

5)相對佈局

BoxSizer

GridSizer

FlexGridSizer

GridBagSizer

6)多線程與事件

要點:一、不使用多線程可能會致使圖形界面卡死,

           二、更高效率,更多任務,

           三、thread.start_new_thread(函數名,(參數1,參數2,...))

           四、使用Threading模塊建立線程

7)控件事件

按鈕點擊、文本域內容的改變、鼠標滑過、鍵盤按下

相關文章
相關標籤/搜索