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

  • 相关阅读:
    拦截器
    Mysql修改字段类型,修改字段名
    1.Spring对JDBC整合支持
    由system.currentTimeMillis() 获得当前的时间
    spring 对jdbc的简化
    spring对JDBC的整合支持
    java 运行时异常与非运行时异常理解
    MySQL5.7 的新特点
    基于 SSL 的 Nginx 反向代理
    如何使用 lsyncd 实时同步并执行 shell 命令
  • 原文地址:https://www.cnblogs.com/qytang/p/5604350.html
Copyright © 2011-2022 走看看