wxPython
主要是针对python在win下而产生的控件库; py2exe主要是将py文件包装为windows下可执行的exe文件; setuptools主要是用来安装一些第三方python库的时候使用的,当然也可以用pip。上述的软件python版本需要一致
- Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序。使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局。在完成编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包成在任意电脑都能运行的工具,网上找找发现了py2exe正好可以完成这个功能
import
wx
- If you selected the "Make this install be the default
- wxPython" option in the installer then this version will be the one
- that is imported when apps do "import wx".
注释中出现错误:SyntaxError: Non-ASCII character '\xe8'
在头上加入#encoding=utf-8
编辑好改文件后,使用py2exe将Python脚本编译成Windows可执行文件,这样就不需要Python解释器了
py2exe
- py2exe is a Python Distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.
要使用py2exe,首先要编写一个编译脚本,然后通过Python运行编译脚本即可将其他的脚本编译成可执行文件。以下实例是将要编译成可执行文件的脚本,文件名:setup.py
import distutils
import py2exe
distutils.core.setup(windows=['Win-example.py'])
方括号中就是要编译的脚本名,前边的windows 表示将其编译成GUI程序。如果要编译命令行界面的可执行文件,只要将windows改为console,如果需要将脚本编译成Windows服务,则可以使用service选项。
之前的一份:
#encoding=utf-8
from distutils.core import setup
setup(name="dollar",version="1.0",description="setup",author="dollar",py_modules=["packTest.learn_All","packTest.testHello"])
#后面存放要发布的模块名
boa construct
只用32位的,所以wxpython和python只能是32位的
终于安装好了,卸载、安装、卸载、安装......晕
python的版本要跟wxPython的版本相同,不然会在cmd中无法导入import wx
python和wxPython的版本不能太高,因为boa construct的版本更新的不迅速
多次卸载后总结:python2.6.6(32bits)+wxPython2.8.11.0(32bits)+boa0.6.1(32bits)版本即可
貌似python2.5 2.6都可以
1 python的安装需要添加到环境变量路径中
2 wxPython的版本需要跟python的版本对应
3boa只能是32bits,其他两个必须也是
软件的下载路径(下载版本都不要太高)
python:https://www.python.org/downloads/windows/
wxPython:https://sourceforge.net/projects/wxpython/files/wxPython/2.8.11.0/
boaconstruct:https://sourceforge.net/projects/boa-constructor/files/Boa-Constructor/
新建一个对话框
谢谢网友分享
#encoding=utf-8
#'''MainWindow类完成最简单的编辑功能,添加一个主菜单,两个子菜单(about和exit)'''
import wx
#这个地方引入了Wxpython,在安装wxpython时安装到了
#python2.6的script目录下
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() #循环监听事件
...