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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
详谈Python基础之内置函数和递归
Jun 21 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
python决策树之CART分类回归树详解
Dec 20 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
python用户评论标签匹配的解决方法
May 31 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
python如何建立全零数组
Jul 19 Python
python中 Flask Web 表单的使用方法
May 20 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设计聊天室步步通
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
php socket通信简单实现
2016/11/18 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
python global和nonlocal用法解析
2020/02/03 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
jupyter notebook 重装教程
2020/04/16 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
python用700行代码实现http客户端
2021/01/14 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
法律专业应届本科毕业生求职信
2013/10/25 职场文书
土木工程专业个人求职信
2013/12/05 职场文书
蓬莱阁导游词
2015/02/04 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2016年感恩节寄语
2015/12/07 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技