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中列表(list)操作方法汇总
Aug 18 Python
在Python中使用列表生成式的教程
Apr 27 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
Python性能分析工具Profile使用实例
Nov 19 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
layui递归实现动态左侧菜单
2019/07/26 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
求职简历的自我评价怎样写好
2013/10/07 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
导师就业推荐信范文
2014/05/22 职场文书
经济管理自荐书
2014/06/09 职场文书
实习单位证明范例
2014/11/17 职场文书
南湾猴岛导游词
2015/02/09 职场文书
佛光寺导游词
2015/02/10 职场文书
主持人开场白台词
2015/05/29 职场文书
建国大业观后感600字
2015/06/01 职场文书
卡特教练观后感
2015/06/08 职场文书
物业公司管理制度
2015/08/05 职场文书