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用字典统计单词或汉字词个数示例
Apr 22 Python
详解Python import方法引入模块的实例
Aug 02 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
python实现TCP文件传输
Mar 20 Python
弄清Pytorch显存的分配机制
Dec 10 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 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
咖啡的传说和历史
2021/03/03 新手入门
php文件上传、下载和删除示例
2020/08/28 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
python去除字符串中的换行符
2017/10/11 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
学习python的前途 python挣钱
2019/02/27 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
优秀团队申报材料
2014/12/26 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2015初一年级组工作总结
2015/07/24 职场文书