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列表推导式的使用方法
Nov 21 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
Python常用内置模块之xml模块(详解)
May 23 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
对python 自定义协议的方法详解
Feb 13 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
Python私有属性私有方法应用实例解析
Sep 15 Python
Python截图并保存的具体实例
Jan 14 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/07/17 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
详解Python中的变量及其命名和打印
2016/03/11 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
审核会计岗位职责
2013/11/08 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
小学生作文评语
2014/04/18 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
2014年化验员工作总结
2014/11/18 职场文书
运动员加油词
2015/07/18 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers