一些最常見的錯誤現象及解決方法
有一些錯誤它們可能會發生在你的wxPython應用程序對象或初始的頂級窗口在創建時,這些錯誤可能是很難診斷的。下面我們列出一些最常見的錯誤現象及解決方法:
錯誤現象:程序啟動時提示“unable to import module wx。”
原因:
wxPython模塊不在你的PYTHONPATH中。這意味著wxPython沒有被正確地安裝。如果你的系統上有多個版本的Python,wxPython可能安裝在了你沒有使用的Python版本中。
解決方法:
首先,確定你的系統上安裝了哪些版本的Python。在Unix系統上,使用which python命令將告訴你默認的安裝。在Windows系統上,如果wxPython被安裝到了相應的Python版本中,它將位于/Lib/site-packages子目錄下。然后重裝wxPython。
錯誤現象:應用程序啟動時立即崩潰,或崩潰后出現一空白窗口。
原因:
在wx.App創建之前,創建或使用了一個wxPython對象。
解決方法:
在啟動你的腳本時立即創建wx.App對象。
錯誤現象:頂級窗口被創建同時又立刻關閉。應用程序立即退出。
原因:
沒有調用wx.App的MainLoop()方法。
解決方法:
在你的所有設置完成后調用MainLoop()方法。
錯誤現象:頂級窗口被創建同時又立刻關閉。應用程序立即退出。但我調用了MainLoop()方法。
原因:
你的應用程序的OnInit()方法中有錯誤,或OnInit()方法調用了某些方法(如窗口的__init__()
方法)。
解決方法:
在MainLoop()被調用之前出現錯誤的話,這將觸發一個異常且程序退出。如果你的應用程序設置了重定向輸出到窗口,那么那些窗口將一閃而過,你不能看到顯示在窗口中的錯誤信息。這種情況下,你要使用 redirect=False關閉重定向選項,以便看到錯誤提示。
總結
1、wxPython程序的實現基于兩個必要的對象:應用程序對象和頂級窗口。任何wxPython應用程序都需要去實例化一個wx.App,并且至少有一個頂級窗口。
2、應用程序對象包含OnInit()方法,它在啟動時被調用。在這個方法中,通常要初始化框架和別的全局對象。wxPython應用程序通常在它的所有的頂級窗口被關閉或主事件循環退出時結束。
3、應用程序對象也控制wxPython文本輸出的位置。默認情況下,wxPython重定向stdout和stderr到一個特定的窗口。這個行為使得診斷啟動時產生的錯誤變得困難了。但是我們可以通過讓wxPython把錯誤消息發送到一個文件或控制臺窗口來解決。
4、一個wxPython應用程序通常至少有一個wx.Frame的子類。一個wx.Frame對象可以使用style參數來創建組合的樣式。每個wxWidget對象,包括框架,都有一個ID,這個ID可以被應用程序顯式地賦值或由wxPython生成。子窗口是框架的內容,框架是它的雙親。通常,一個框架包含一個單一的wx.Panel,更多的子窗口被放置在這個Panel中。框架的唯一的子窗口的尺寸自動隨其父框架的尺寸的改變而改變。框架有明確的關于管理菜單欄、工具欄和狀態欄的機制。
5、盡管你將使用框架做任何復雜的事情,但當你想簡單而快速地得到來自用戶的信息時,你可以給用戶顯示一個標準的對話窗口。對于很多任務都有標準的對話框,包括警告框、簡單的文本輸入框和列表選擇框等等。