时间:2016-09-27 17:19:53
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序。使用wxPython来做界面非常的简单,只是不 能像C#一样拖动控件,需要自行写代码布局。在完成编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包成在任意电脑都 能运行的工具,网上找找发现了py2exe正好可以完成这个功能。wxPython和py2exe都是开源免费软件。
wxPython: 下载后双击安装即可,安装程序会自动安装到对应python\Scripts下。
py2exe:同样双击即可安装,注意下载要对应使用的Python版本。
下面分别示例说明wxPython和py2exe的简单使用。
Unicode字符串:
Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u”This is a Unicode string.”。
此外还需要记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
文件名:wxTest.py:
# -*- coding: cp936 -*-
'''MainWindow类完成最简单的编辑功能,添加一个主菜单,两个子菜单(about和exit)'''
import wx
class MainWindow(wx.Frame):
'''定义一个窗口类'''
def __init__( self , parent, title):
wx.Frame.__init__( self , parent, title = title, size = ( 300 , 300 ))
self .control = wx.TextCtrl( self , style = wx.TE_MULTILINE)
self .setupMenuBar()
self .Show( True )
def setupMenuBar( self ):
self .CreateStatusBar()
menubar = wx.MenuBar()
menufile = wx.Menu()
mnuabout = menufile.Append(wx.ID_ABOUT, '&About' , 'about this shit' )
mnuexit = menufile.Append(wx.ID_EXIT, 'E&xit' , 'end program' )
menubar.Append(menufile, '&File' )
#事件绑定
self .Bind(wx.EVT_MENU, self .onAbout, mnuabout)
self .Bind(wx.EVT_MENU, self .onExit, mnuexit)
self .SetMenuBar(menubar)
def onAbout( self , evt):
'''点击about的事件响应,中文字符串要在前面加u'''
dlg = wx.MessageDialog( self , u'magetz第一个python桌面应用' , 'About my app' , wx.OK)
dlg.ShowModal()
dlg.Destroy()
def onExit( self , evt):
'''点击退出'''
self .Close( True )
app = wx.App( False )
frame = MainWindow( None , 'magetz Editor' )
app.MainLoop() #循环监听事件
|
编 辑好改文件后,使用py2exe将Python脚本编译成Windows可执行文件,这样就不需要Python解释器了。要使用py2exe,首先要编写 一个编译脚本,然后通过Python运行编译脚本即可将其他的脚本编译成可执行文件。以下实例是将要编译成可执行文件的脚本,文件名:setup.py
import distutils
import py2exe
distutils.core.setup(windows = [ 'wxTest.py' ])
|
在setup.py中除了导入必需的模块以外,只有一条语句:
distutils.core.setup(windows = [ 'wxTest.py' ])
|
或者:
from distutils.core import setup
import py2exe
setup(windows=['wxTest.py'])
方括号中就是要编译的脚本名,前边的windows 表示将其编译成GUI程序。如果要编译命令行界面的可执行文件,只要将windows改为console,如果需要将脚本编译成Windows服务,则可以使用service选项。
都编辑好之后,将wxTest.py和setup.py放在同一个路径下,cmd进入该路径,输入:
setup.py py2exe
|
如果在运行时报以下错误:
error: MSVCP90.dll: No such file or directory
是因为没有找到MSVCP90.dll,在windows目录下搜索MSVCP90.dll这个文件,然后拷到python安装目录的DLLs下就可以了。
当打包PyQt项目时,可能会报以下错误
ImportError: No module named sip
这时只需要在打包时加上--includes sip就行啦,如:
setup.py py2exe --includes sip
|