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实现xml与数据库读取转换的方法
Jun 17 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python实现维吉尼亚加密法
Mar 20 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
python腾讯语音合成实现过程解析
Aug 01 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
Python+numpy实现矩阵的行列扩展方式
Nov 29 Python
Python实现动态循环输出文字功能
May 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
nginx 设置多个站跨域
2021/03/09 Servers
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
浅析Python中的join()方法的使用
2015/05/19 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
使用TensorFlow实现SVM
2018/09/06 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
优秀教师感人事迹材料
2014/05/04 职场文书
五一口号
2014/06/19 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
高一军训感想
2015/08/07 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS