Python tkinter和exe打包的方法


Posted in Python onFebruary 05, 2020

爬虫程序的核心,爬虫天眼查的公司信息类TianYanCha已经完成了,并且验证可以工作,但是给不是专业方面的人用的话,还要安装Python解释器,还没有界面是挺麻烦的,于是就想写一个简单的界面,然后打包成可执行程序给女票用。

##tkinter界面

由于我的界面要求很简单,只是输入两个文件路径,一个实时输出信息的文本框,于是没有选择其他的Python界面扩展,只是选择Python的事实界面库—tkinter。

界面如下:

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;

以上就是界面部分,效果如下图所示:

Python tkinter和exe打包的方法

##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打包的方法,希望对大家有所帮助!

Python 相关文章推荐
python装饰器初探(推荐)
Jul 21 Python
python中异常报错处理方法汇总
Nov 20 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python语言快速上手学习方法
Dec 14 Python
django admin后台添加导出excel功能示例代码
May 15 Python
python中的global关键字的使用方法
Aug 20 Python
python ubplot使用方法解析
Jan 10 Python
什么是python类属性
Jun 10 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
tensorflow对图像进行拼接的例子
Feb 05 #Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 #Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 #Python
基于Tensorflow批量数据的输入实现方式
Feb 05 #Python
Python操作注册表详细步骤介绍
Feb 05 #Python
Python类继承和多态原理解析
Feb 05 #Python
Python模块 _winreg操作注册表
Feb 05 #Python
You might like
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php中使用url传递数组的方法
2015/02/11 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
event.srcElement+表格应用
2006/08/29 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
优秀英文求职信范文
2015/03/19 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
聊一聊python常用的编程模块
2021/05/14 Python