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的project中右键
随手新建了一个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开发中遇到的坑,先写这么多,以后遇到了再更新,希望你不要再踏入!