有打算使用 python3.0 写一个 GUI 加密工具,安装 wxPython4.0 时遇到些问题
新手笔记,如有错误,还请指正(个人感觉理解有偏差,但没有更好的解决办法)。
根下载目录,供浏览
soueceforge 上的 wxPython3下载地址
32位 python 2.7 下载对应的 wxPython3.0-win32-3.0.2.0-py27.exe
64位 python 2.7 下载对应的 wxPython3.0-win64-3.0.2.0-py27.exe
双击即可安装,注意安装wxPython的路径(查看自己python的安装路径情况)
C:\Python27\Lib\site-packages
C:\Python36-32\Lib\site-packages
####第四步:测试功能。
注:仅适用于python2,不适用python3
python3的wxPython安装过程见文中。
源码见文末
以 ubuntu 为例
sudo apt-get install python
python 2.7 下载对应的 wxPython-src-2.7.2.0.tar
此步骤中,安装 wxPython-src-2.7.2.0 未出现问题,已完成。
解压
进入目录
chmod 777 configure
make
make install
源码文末。
注:此方法仅适用于python2,不适用python3。
python3的wxPython安装过程见文中。
源码文末。
以上方法中python3的wxPython经实践发现后续会出现错误。
换一种思路:
wxPython ftp 服务器上的下载路径
各个版本一定要匹配自己使用的 python 版本
文件名各种各样:
wxPython的-4.0.0a2.dev2973 + 5ff6be7-CP35-cp35m-macosx_10_6_intel.whl
- 这是“wxPython”包
- 这是版本4.0.0a2.dev2973 + 5ff6be7(开发版本,与
从源代码管理系统派生的内部版本号。)
- 它是为CPython版本3.5构建的
- 它是为macosx操作系统而打造的
- 它为OSX版本10.6或更高版本而构建
- 它是为英特尔处理器而打造的。
如果安装的是 python3.6 ,则下载wxPython3.6版本的轮子。
版本不匹配的话会有报错。
可以将疑似匹配的轮子全部下载,然后在 win 下的 CMD 命令行挨个尝试
最终发现
我的Win7下安装的 python3.6 可以使用wxPython-4.0.0rc1.dev3607+c1a0a4d-cp36-cp36m-win32
我的 Xubuntu 17.01 可以使用wxPython-4.0.0a2.dev3038+953a2e5-cp27-cp27mu-linux_x86_64.whl
安装方法:
pip install 轮子名
比如:
pip install wxPython-4.0.0a2.dev3038+953a2e5-cp27-cp27mu-linux_x86_64.whl
最近实验做完了,前来更新wxPython的使用方法
针对Python3的wxPython的安装过程解释如下:
wxPython 4.0的设计交互性更好,安装过程:
安装 python3 官网链接
安装wxPython ( python3 默认包含 pip):
pip install wxPython
这个时候即可使用 wxPython。
注:python3 的 wxPython4.0 部分功能与 python2 的 wxPython3 不同。
例如:
python2 的 wxPython3 打开文件对话框:FileDialog 的 style 为 wx.OPEN
wxPython 3.0 对话框详解
python3 的 wxPython4.0 文件对话框:FileDialog 的 style 为wx.FD_OPEN
wxPython 4.0 官网文档 wxPython API Documentation
测试代码:
#!/usr/bin/env python
# 出自《wxPython in Action》的hello.py
"""Hello, wxPython! program."""
import wx
class Frame(wx.Frame):
"""Frame class that displays an image."""
def __init__(self, image, parent=None, id=-1,
pos=wx.DefaultPosition, title='Hello, wxPython!'):
"""Create a Frame instance and display image."""
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHeight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)
self.SetClientSize(size)
class App(wx.App):
"""Application class."""
def OnInit(self):
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
运行结果: