學習python中遇到的那些坑
1.wxpython:
開始學習python一段時間後,厭倦了命令列,想著玩玩GUI,python自帶的Tkinter我就不說了,前人說過,坑太多我就不去踏了
目標釘在wxpython和pyQT,網上推薦較多的是wxpython, pyQt 沒玩過,想想QT的東西肯定不簡單,就沒去碰,乖乖的安裝了wxPython
寫出了第一個wxpython程式:這個程式沒有什麼功能,就是一個文字框中顯示滑鼠的座標值
# -*- coding: UTF-8 -*- ''' Created on 2014-10-30 @author: bo.chen ''' import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300)) panel = wx.Panel(self, -1) panel.Bind(wx.EVT_MOTION, self.OnMove) wx.StaticText(panel, -1, "Pos:", pos=(10, 12)) self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10)) def OnMove(self, event): pos = event.GetPosition() self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y)) if __name__ == '__main__': app = wx.PySimpleApp() frame = MyFrame() frame.Show(True) app.MainLoop()
所用編輯器為pycharm,死活執行不了:
File "D:/mypython/wx/wx1.py", line 8, in <module>
class MyFrame(wx.Frame):
AttributeError: 'module' object has no attribute 'Frame'
找了半天實在是鬱悶,然後直接開啟目錄執行 wx1.py 沒有任何問題,百撕不得騎姐,終於在一個陽光明媚的上午找到了原因:
原來這裡的 import wx匯入的是本地python包wx,並未匯入wxpython下的wx包:是這樣的在建立wx1.py指令碼之前,在pycharm
隨手新建了一個Python Package 名字叫作wx,然後在wx資料夾下建立了wx1.py
這裡的wx資料夾是Python 包而非普通的資料夾,雖然都是資料夾,但是在pycharm中執行環境中是區別對待的,因為這個錯誤險些放棄了wxpython,因為
pycharm真的很好用,如果pycharm 中不能使用wxpython,我是不會放棄pycharm的,我肯定會選擇其他的圖形庫.這種低階錯誤真的不應該犯!
=======================================================================================================================
2.py2exe:
error: [Errno 2] No such file or directory: 'MSVCP90.dll'
前面已經用python寫出了一個GUI,在windows下也執行起來了,但是這個程式只能在安裝有python和電腦上執行,有沒有辦法讓普通電腦上執行用python寫的程式
呢?答案是 有!而且還有多種,這裡也是選擇較為方便的一種方案py2exe
安裝挺順利 沒有網上說的那些問題,開始命令列模式:打包exe,出現上述錯誤:
error: [Errno 2] No such file or directory: 'MSVCP90.dll',解決方法很簡單 到windows目錄下找個MSVCP90.dll檔案放到C:\Python27\DLLs下重新打包 OK,注意我的系統是64位
的,python是32位,在c盤搜尋MSVCP90.dll可能會找到多個檔案,選擇X86包下面的那個
ps. 成功生成exe檔案很興奮,趕緊把生成的wx1.exe拷貝到其他沒有python環境的電腦上執行試驗,啪啪的打臉:
這是神馬情況呢? 原來單獨的exe並不能執行,需要把生成exe那個目錄dist一塊拷走才能執行
3.Boa constructor不支援中文
Boa constructor是一個視覺化 可拖拽的wxpython IDE,儘管介面做的四分五裂,但是功能還算能用,當你用它拖拽出一個GUI後關閉,來到
pycharm編輯器 下寫邏輯,寫下一句print '點選了按鈕',儲存再用Boa constructor開啟,發現Boa constructor執行不了了:
解決方法:Boa
constructor的編輯器中不支援中文,想顯示中文要將中文轉成Unicode編碼
啊啊 這個問題原來是Boa constructor自動生成的的.py檔案造成的 ,只需在.py開頭加上:
#coding:utf-8即可
這就是學習python開發中遇到的坑,先寫這麼多,以後遇到了再更新,希望你不要再踏入!