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 16 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python 私有函数的实例详解
Sep 11 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python实现简单井字棋游戏
Mar 04 Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python百行代码实现汉服圈图片爬取
Nov 23 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简单计算两个时间差的方法示例
2017/06/20 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
python 反向输出字符串的方法
2018/07/16 Python
Django密码存储策略分析
2020/01/09 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
努比亚手机官网:nubia
2016/10/06 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
Linux的文件类型
2016/07/05 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
青春寄语大全
2014/04/09 职场文书
村级四风对照检查材料
2014/08/24 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
python读取mat文件生成h5文件的实现
2022/07/15 Python