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中mechanize库的简单使用示例
Jan 10 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
用Python抢过年的火车票附源码
Dec 07 Python
利用python将图片转换成excel文档格式
Dec 30 Python
python实现C4.5决策树算法
Aug 29 Python
3个用于数据科学的顶级Python库
Sep 29 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
Python extract及contains方法代码实例
Sep 11 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
4种非常实用的python内置数据结构
Apr 28 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery的12招常用技巧分享
2011/08/08 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python命令行参数用法实例分析
2019/06/25 Python
python3实现mysql导出excel的方法
2019/07/31 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
编程输出如下图形
2013/11/24 面试题
建筑实习自我鉴定
2013/10/18 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
个人违纪检讨书
2014/09/15 职场文书
三方股份合作协议书
2014/10/13 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js