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中操作字符串之rstrip()方法的使用
May 19 Python
深入理解Python中的内置常量
May 20 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Python log模块logging记录打印用法解析
Jan 20 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
pandas的resample重采样的使用
Apr 24 Python
pytorch实现查看当前学习率
Jun 24 Python
python绘制箱型图
Apr 27 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php多重接口的实现方法
2015/06/20 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python 基础知识之字符串处理
2017/01/06 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
竞选劳动委员演讲稿
2014/04/28 职场文书
工会主席事迹材料
2014/06/03 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
给老婆的道歉信
2015/01/20 职场文书
亲属关系公证书样本
2015/01/23 职场文书
保护校园环境倡议书
2015/04/28 职场文书
中秋联欢会主持词
2015/07/04 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL