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使用百度API上传文件到百度网盘代码分享
Nov 08 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
python 定义给定初值或长度的list方法
Jun 23 Python
python顺序执行多个py文件的方法
Jun 29 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
pip安装python库的方法总结
Aug 02 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
python Pexpect模块的使用
Dec 25 Python
python实现跨年表白神器--你值得拥有
Jan 04 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
详解angular2 控制视图的封装模式
2018/12/27 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
用实例说明python的*args和**kwargs用法
2013/11/01 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python中数字是否为可变类型
2020/07/08 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
this关键字的作用
2016/01/30 面试题
个人委托书范本
2014/04/02 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书