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获取单个程序CPU使用情况趋势图
Mar 10 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python中pip的安装与使用教程
Aug 10 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
python的range和linspace使用详解
Nov 27 Python
Python 如何查找特定类型文件
Aug 17 Python
python 如何调用 dubbo 接口
Sep 24 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Python 实现定积分与二重定积分的操作
May 26 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
js轮播图的插件化封装详解
2017/07/17 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
Python基本数据类型详细介绍
2014/03/11 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python操作gitlab API过程解析
2019/12/27 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
岗位职责的定义
2013/11/10 职场文书
档案管理员岗位职责
2013/12/01 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
客户答谢会活动方案
2014/08/31 职场文书
荆州古城导游词
2015/02/06 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
Go语言入门exec的基本使用
2022/05/20 Golang