使用python编写简单的小程序编译成exe跑在win10上


Posted in Python onJanuary 15, 2018

每天的工作其实很无聊,早知道应该去IT公司闯荡的。最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅。

人的精力毕竟是有限的,所以不一定在每个整点都可以及时去做这项工作。灵机一动,这种一丝不苟的活儿应该让计算器来做,由它来在每个整点来告诉我该去工作了。

说干就干,平时只用c#写过小程序,由于办公电脑上是公用的,所以没有想自己电脑一样装有visual studio,索性心一横,用python试试吧。总是听说那句大名鼎鼎的“人生苦短,我用python”。这一次就当是我的入门吧。

我的需求其实很简单,让程序获取当前的时间,然后使用间隔为1秒的timer去重复刷新时间,当时间滚动到整点的时候,且该整点在我们预期区间[7-23]点内,我就让计算机发出蜂鸣声来提示该去查客流了。

通过简单的查阅,我决定使用tkinter来做UI,我对UI的要求不高,本身的设计也很糟糕,所以只是要在窗口上放一个Lable,让这个Lable的text按秒来显示当前的时间。

第一步,使用tkinter绘制窗体,在该窗体上增加一个Lable,效果图就是下面这样:

使用python编写简单的小程序编译成exe跑在win10上

接下来,第二步,使用一个timer来计时,interval 设置为1000ms,在start()时间中实现,获取当前时间值,重新赋到Lable的text属性上,这样就实现了类似时钟的滚动效果。效果图如下:

使用python编写简单的小程序编译成exe跑在win10上

前两步都顺利实现了,代码方面就剩下一步了。最后一步要做的就是,在start()事件时候,判断获取的当前时间是否是整点,如果是预期的整点,就让电脑蜂鸣一阵,以提醒我该去工作了。这里面主要就一个新功能,怎样使得计算器蜂鸣。

附代码如下(python 2.7):

# -*- coding: utf-8 -*-
from tkinter import *      # 导入 Tkinter 库
import time,datetime,winsound,threading
root = Tk() 
lbl = Label(root,text ="hello,world",width = 30,height = 2)
def tick():
  global timer
  timer = threading.Timer(1.0,tick,"")
  currenttime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  lbl.config(text = currenttime)  
  currenttime1 = datetime.datetime.now()
  if currenttime1.minute == 0 and currenttime1.second == 0 and currenttime1.hour > 5 and currenttime1.hour < 23:
    winsound.Beep(1000,5000)
    #其中600表示声音大小,1000表示发生时长,1000为1秒
  lbl.pack() # 将小部件放置到主窗口中
  timer.start()
if __name__ == "__main__":
  timer = threading.Timer(1.0,tick,"")
  timer.start()
root.mainloop()

前面这些都不是我今天记录的重点。这篇文章的记录重点在尝试将py代码编译成exe文件。

安装pyinstaller

到指定目录下使用pyinstaller来讲py文件编译成exe

首先完成第一步,在安装python后,完成环境变量的配置,这点我在这里不赘述,请在博客园上查。这里简单介绍下在cmd上安装pyinstaller。为啥用它呢?请百度,我现在也一知半解。安装命令:pip install pyinstaller,具体安装过程如下截图:

使用python编写简单的小程序编译成exe跑在win10上

接下来我们来做第二步。我今天在这一步上走了很多弯路,最终在查阅众多资料后,得到了一个勉强可用的折中方法。如果大家有更好的方法,请不吝指教。

我们把写好的py文件,拷贝到如下路径:

使用python编写简单的小程序编译成exe跑在win10上

使用如下命令进行编译成exe文件:

pyinstaller -F -w yourfilename.py

使用python编写简单的小程序编译成exe跑在win10上

使用python编写简单的小程序编译成exe跑在win10上

成功编译生成exe文件,生成的文件结构如图:

使用python编写简单的小程序编译成exe跑在win10上

至此,我完成了今天的工作。使用简单的python编写一个定时提醒程序。

这里我记录两个疑问:

第一,感觉py文件经pyinstaller编译出来的exe文件偏大,足有8兆多,这是为什么?

第二,如果不在指定目录下编译成exe,就不会成功,这是为什么?附带失败截图:

使用python编写简单的小程序编译成exe跑在win10上

最后,在这里留下一点未来可以扩展的地方,下次尝试使用tts技术,实现整点报时提醒,毕竟现在的蜂鸣嘟嘟声,实在是有点傻。

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
Python操作串口的方法
Jun 17 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
python3.5 email实现发送邮件功能
May 22 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
详解python UDP 编程
Aug 24 Python
降低python版本的操作方法
Sep 11 Python
pytorch 实现在测试的时候启用dropout
May 27 Python
浅谈Python中的正则表达式
Jun 28 Python
Django框架中视图的用法
Jun 10 Python
python逆向入门教程
Jan 15 #Python
Python3一行代码实现图片文字识别的示例
Jan 15 #Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 #Python
selenium python浏览器多窗口处理代码示例
Jan 15 #Python
100行python代码实现跳一跳辅助程序
Jan 15 #Python
tornado 多进程模式解析
Jan 15 #Python
200 行python 代码实现 2048 游戏
Jan 12 #Python
You might like
php 中英文语言转换类
2011/09/07 PHP
php实现可运算的验证码
2015/11/10 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
简单了解Python中的几种函数
2017/11/03 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python全栈之列表数据类型详解
2019/10/01 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
使用Python构造hive insert语句说明
2020/06/06 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
村长反四风问题个人对照检查材料
2014/09/21 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js