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爬取网页中的图片(搜狗图片)详解
Mar 23 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python语言进阶知识点总结
May 28 Python
Python pandas用法最全整理
Aug 04 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
Python中关于logging模块的学习笔记
Jun 03 Python
Python hashlib和hmac模块使用方法解析
Dec 08 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php实现文件编码批量转换
2014/03/10 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
分享一个常用的Python模拟登陆类
2015/03/29 Python
python实现杨辉三角思路
2017/07/14 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
详解Python中的文件操作
2021/01/14 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
大学生旷课检讨书
2014/01/22 职场文书
原材料检验岗位职责
2014/03/15 职场文书
安全协议书
2014/04/23 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
多人股份制合作协议书
2016/03/19 职场文书
React更新渲染原理深入分析
2022/12/24 Javascript