Python tkinter和exe打包的方法
爬虫程序的核心,爬虫天眼查的公司信息类TianYanCha已经完成了,并且验证可以工作,但是给不是专业方面的人用的话,还要安装Python解释器,还没有界面是挺麻烦的,于是就想写一个简单的界面,然后打包成可执行程序给女票用。
##tkinter界面
由于我的界面要求很简单,只是输入两个文件路径,一个实时输出信息的文本框,于是没有选择其他的Python界面扩展,只是选择Python的事实界面库—tkinter。
界面如下:
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
class Application(tk.Frame): def __init__( self , master = None ): tk.Frame.__init__( self , master) self .pack() self .createWidgets() def __del__( self ): print ( 'del tianyanche' ) root.destroy def createWidgets( self ): self .labelDest = tk.Label( self ) self .labelDest[ "text" ] = '来源路径:' self .labelDest.grid(row = 0 , column = 0 ) self .contentDest = tk.StringVar() self .contentDest. set ( './work/all.txt' ) self .entryDest = tk.Entry( self ) self .entryDest[ "textvariable" ] = self .contentDest self .entryDest.grid(row = 0 , column = 1 ) self .labelSuc = tk.Label( self ) self .labelSuc[ "text" ] = '成功路径:' self .labelSuc.grid(row = 1 , column = 0 ) self .contentSuc = tk.StringVar() self .contentSuc. set ( './work/suc.txt' ) #设置界面的默认值 self .entrySuc = tk.Entry( self ) self .entrySuc[ "textvariable" ] = self .contentSuc self .entrySuc.grid(row = 1 , column = 1 ) self .labelFail = tk.Label( self ) self .labelFail[ "text" ] = '失败路径:' #设置界面的默认值 self .labelFail.grid(row = 2 , column = 0 ) self .contentFail = tk.StringVar() self .contentFail. set ( './work/fail.txt' ) #设置界面的默认值 self .entryFail = tk.Entry( self ) self .entryFail[ "textvariable" ] = self .contentFail self .entryFail.grid(row = 2 , column = 1 ) self .buttonStart = tk.Button( self , text = '开始' ) self .buttonStart[ 'command' ] = self .start self .buttonStart[ 'fg' ] = 'green' self .buttonStart.grid(row = 3 , column = 0 ) self .quit = tk.Button( self , text = "停止" , fg = "red" , command = self .quit) self .quit.grid(row = 3 , column = 1 ) self .text = ScrolledText( self ) self .text.grid(row = 4 , columnspan = 2 ) def start( self ): self .running = True self .text.insert( 'end' , '来源:' + self .contentDest.get() + "\r\n" ) self .text.insert( 'end' , '成功:' + self .contentSuc.get() + "\r\n" ) self .text.insert( 'end' , '失败:' + self .contentFail.get() + "\r\n" ) self .tianyancha = TianYanCha.TianYanCha( self .contentSuc.get(), self .contentFail.get()) self .tianyancha.setOutput( self .text) self .td = threading.Thread(target = self .startThread) self .td.setDaemon( True ) self .td.start() def quit( self ): self .running = False del self .tianyancha print ( 'quit' ) def startThread( self ): self .text.delete( 0.0 , 'end' ) file = open ( self .contentDest.get()) for line in file .readlines(): if self .running = = True : self .tianyancha.getCompanyByName(line.strip( '\n' )) else : print ( '停止' ) break ; |
以上就是界面部分,效果如下图所示:
##exe打包
Python的常用exe打包有:PyInstaller、py2exe等。我直接选择了PyInstaller。
PyInstaller安装:pip install PyInstaller。目前的最新版本3.2。
PyInstaller打包命令:pyinstaller -F -i snail.ico Application.py。
命令释义:
| 参数|含义|
| :-------------: |:-------------|
|-F|指定打包后只生成一个exe格式的文件|
|-D|–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)|
|-c|–console, –nowindowed 使用控制台,无界面(默认)|
|-w|–windowed, –noconsole 使用窗口,无控制台|
|-p|添加搜索路径,让其找到对应的库|
|-i|改变生成程序的icon图标|
以上,此爬虫程序终于完成了,可以上交领导啦~
没想到竟然有同学需要完整的程序,我只好上传到github了,传送门:git@github.com:kestiny/PythonCrawler.git
总结
以上所述是小编给大家介绍的Python tkinter和exe打包的方法,希望对大家有所帮助!