zoukankan      html  css  js  c++  java
  • Python使用wxPython、py2exe编写桌面程序-乾颐堂

    Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序。使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局。在完成编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包成在任意电脑都能运行的工具,网上找找发现了py2exe正好可以完成这个功能。wxPython和py2exe都是开源免费软件。

    wxPython: 下载后双击安装即可,安装程序会自动安装到对应pythonScripts下。

    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=(300300))
        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

  • 相关阅读:
    Web API 强势入门指南
    毫秒必争,前端网页性能最佳实践
    Windbg Extension NetExt 使用指南 【3】 ---- 挖掘你想要的数据 Managed Heap
    Windbg Extension NetExt 使用指南 【2】 ---- NetExt 的基本命令介绍
    Windbg Extension NetExt 使用指南 【1】 ---- NetExt 介绍
    WCF : 修复 Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service 问题
    透过WinDBG的视角看String
    Microsoft Azure Web Sites应用与实践【4】—— Microsoft Azure网站的“后门”
    企业IT管理员IE11升级指南【17】—— F12 开发者工具
    WCF : 如何将NetTcpBinding寄宿在IIS7上
  • 原文地址:https://www.cnblogs.com/qytang/p/5604350.html
Copyright © 2011-2022 走看看