Python使用wxPython、py2exe編寫桌面程序-乾頤堂


Python是支持可視化編程,即編寫gui程序,你可以用它來編寫自己喜歡的桌面程序。使用wxPython來做界面非常的簡單,只是不能像C#一樣拖動控件,需要自行寫代碼布局。在完成編寫之后,由於直接的py文件不能再沒有安裝python的電腦上運行,能否有一個打包成在任意電腦都能運行的工具,網上找找發現了py2exe正好可以完成這個功能。wxPython和py2exe都是開源免費軟件。

wxPython: 下載后雙擊安裝即可,安裝程序會自動安裝到對應python\Scripts下。

py2exe:同樣雙擊即可安裝,注意下載要對應使用的Python版本。

下面分別示例說明wxPython和py2exe的簡單使用。

文件名:wxTest.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- 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的事件響應'''
       dlg  =  wx.MessageDialog( self 'This app is a simple text editor' 'About my app' , wx.OK)
       dlg.ShowModal()
       dlg.Destroy()
   
   def  onExit( self , evt):
       '''點擊退出'''
       self .Close( True )
app  =  wx.App( False )
frame  =  MainWindow( None 'Small Editor' )
app.MainLoop()  #循環監聽事件

編輯好改文件后,使用py2exe將Python腳本編譯成Windows可執行文件,這樣就不需要Python解釋器了。要使用py2exe,首先要編寫一個編譯腳本,然后通過Python運行編譯腳本即可將其他的腳本編譯成可執行文件。以下實例是將要編譯成可執行文件的腳本,文件名:setup.py

1
2
3
import  distutils
import  py2exe
distutils.core.setup(windows = [ 'wxTest.py' ])

在setup.py中除了導入必需的模塊以外,只有一條語句:

1
distutils.core.setup(windows = [ 'wxTest.py' ])

方括號中就是要編譯的腳本名,前邊的windows 表示將其編譯成GUI程序。如果要編譯命令行界面的可執行文件,只要將windows改為console,如果需要將腳本編譯成Windows服務,則可以使用service選項。

都編輯好之后,將wxTest.py和setup.py放在同一個路徑下,cmd進入該路徑,輸入:

1
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就行啦,如:

1
setup.py py2exe --includes sip

運行結束之后,會在路徑下生成dist和 build兩個目錄。其中dist目錄中就是編譯生成的文件。如果要在其他未安裝Python的機器上運行編譯好的程序,只要將dist目錄復制到其他機器上即可

www.qytang.com/
http://www.qytang.com/cn/list/29/
http://www.qytang.com/cn/list/28/404.htm
http://www.qytang.com/cn/list/28/397.htm
http://www.qytang.com/cn/list/28/396.htm
http://www.qytang.com/cn/list/28/395.htm
http://www.qytang.com/cn/list/28/394.htm
http://www.qytang.com/cn/list/28/393.htm
http://www.qytang.com/cn/list/28/391.htm
http://www.qytang.com/cn/list/28/389.htm
http://www.qytang.com/cn/list/28/388.htm
http://www.qytang.com/cn/list/28/362.htm
http://www.qytang.com/cn/list/28/358.htm
http://www.qytang.com/cn/list/28/351.htm
http://www.qytang.com/cn/list/28/348.htm
http://www.qytang.com/cn/list/28/340.htm
http://www.qytang.com/cn/list/28/338.htm
http://www.qytang.com/cn/list/28/336.htm
http://www.qytang.com/cn/list/28/330.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM