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 相关文章推荐
在MAC上搭建python数据分析开发环境
Jan 26 Python
探究python中open函数的使用
Mar 01 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Django model序列化为json的方法示例
Oct 16 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
python多任务及返回值的处理方法
Jan 22 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
中间件分为哪几类
2012/03/14 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
大二学期个人自我评价
2014/01/13 职场文书
师德师风演讲稿
2014/05/05 职场文书
优秀护士先进事迹
2014/05/08 职场文书
化学工程专业求职信
2014/08/10 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
道歉的话语大全
2015/05/12 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers