对现实不满,充满无力感,可是作为一个码农,大时代里的一个小人物,并不能改变什么,只能在程序代码里的世界里找点乐趣吧, 东坡先生如是说:
莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。

TomatoTimer 是我常用了一个网站,用来践行蕃茄工作法

可是我想修改默认的时间,加入一点提醒音乐,这个网站我也改不了,不如自己手写一个,界面如下

tomato timer

运行它很简单,只要有 python 环境就行了

gitclone https://github.com/walterfan/tomato-timer.git
pip install -r requirements.txt
./tomato_timer.py

代码也是区区一百行出头

#!/usr/bin/env python3import time
from datetime import datetime, timezone
from tkinter import Tk, StringVar, Entry, Label, Button, ttk, messagebox
from playsound import playsoundDEFAULT_MINS = 25
TIME_FORMAT = "%Y-%m-%d %H:%M:%S"class TomatoTimer:def __init__(self, title = "Tomato Timer", frameSize="360x240"):self._root = Tk()self._style = ttk.Style()self._style.theme_use('alt')self._root.geometry(frameSize)self._root.title(title)self._hour=StringVar()self._minute=StringVar()self._second=StringVar()self.init_ui()self._started = Falseself._tomato_count = 0def set_time(self, hour=0, min=DEFAULT_MINS, sec=0):self._hour.set("{0:2d}".format(hour))self._minute.set("{0:2d}".format(min))self._second.set("{0:2d}".format(sec))def create_time_box(self, label):return Entry(self._root, width=4,font=("Arial",18,""), justify='center', textvariable=label)def init_ui(self):self.set_time()x_value = 90y_value = 80x_step = 60hour_box = self.create_time_box(self._hour)hour_box.place(x=x_value, y=y_value)x_value += x_stepmins_box = self.create_time_box(self._minute)mins_box.place(x=x_value,y=y_value)x_value += x_stepsec_box = self.create_time_box(self._second)sec_box.place(x=x_value,y=y_value)label = Label(self._root, text= "Focus on righ now",font=('Helvetica bold', 20))label.pack(pady=20)y_value += 40btnStart = Button(self._root, text='Start', bd='5', fg="green", command= self.countdown)btnStart.place(x = 80,y = y_value)btnStop = Button(self._root, text='Stop', bd='5', fg="blue", command= self.pause)btnStop.place(x = 140,y = y_value)btnReset = Button(self._root, text='Reset', bd='5', fg="red", command= self.reset)btnReset.place(x = 200,y = y_value)def stay_on_top(self):self._root.lift()self._root.after(2000, self.stay_on_top)def run(self):self.stay_on_top()self._root.mainloop()def reset(self):self._started = Falseself.set_time()def pause(self):self._started = Falsedef get_hour_min_sec(self, left_seconds):mins,secs = divmod(left_seconds, 60)hours=0if mins > 60:hours, mins = divmod(mins, 60)return hours, mins, secsdef countdown(self):self._started = Truetry:left_seconds = int(self._hour.get())*3600 + int(self._minute.get())*60 + int(self._second.get())except:messagebox.showwarning('', 'Invalid Input Value!')while self._started:hours, mins, secs = self.get_hour_min_sec(left_seconds)self.set_time(hours, mins, secs)self._root.update()time.sleep(1)if (left_seconds == 0):self._tomato_count += 1print("It is time: {}, count={}".format( datetime.now().strftime(TIME_FORMAT),self._tomato_count))playsound('starlet.wav', block = False)breakleft_seconds -= 1if __name__ == '__main__':timer = TomatoTimer()timer.run()


http://www.taodudu.cc/news/show-7061184.html

相关文章:

  • Android Java判断密码强度 强度显示
  • 人生哲学,做这样的人
  • excel数据分析思维导图整理
  • 精通Excel数据统计和分析 - 摘要(第4章:方差分析)
  • 互联网时代,如何有效挖掘用户数据?
  • 铝合金6060与6061与6063的区别
  • 常用金属材料 铝及铝合金的特性识别符号
  • 0103-超强铝合金材料介绍GM55,9R相
  • GB/T 43497-2022 铝合金复合管材
  • 铝合金氩弧焊接工艺个人总结
  • 激光焊接3系铝合金的工艺分析
  • 新型高强度铝合金焊条
  • 铝合金表面处理废水除铝工艺
  • 常用金属材料 铝合金材料
  • 俗话说得好
  • 《代码重构》读书笔记(一)
  • 《气候经济与人类未来》—读书笔记
  • 151 个建议 读书笔记
  • 《机器学习》西瓜书读书笔记
  • Guide to Data Mining 读书笔记 相似度距离算法的取舍
  • 习题:计算圆柱表面积和体积
  • Amazon强制下架高退货率产品
  • 牛客SQL 大厂面试真题 某东商城 6套代码及解析
  • 为拯救卖家退货率?亚马逊推出“签名确认”服务-跨境知道
  • 为何“迷你本”退货率很高?
  • 成本管理  降低退货率
  • 跨境早报| 2020美国电商高退货率品类有哪些?速卖通发布重要物流通知!
  • “高退货率”标签引热议,亚马逊跨境电商是好是坏?
  • 7种方法让电商运营人员快速降低退货率
  • 转:月入1.9万,我还是不能买房

一百多行 Python 代码手写蕃茄钟相关推荐

  1. python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  2. 贪吃蛇python撞墙不死_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  3. GUI猜数字游戏,简单的一百多行Python代码实现

    相关文件 需要原码和想学Python的小伙伴可以↓ ↓ ↓ 点这里呀~~ 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 代码实现 导入PyQt5的相关模块 from PyQt ...

  4. 【tkinter】用不到50行Python代码,写一个扫雷小游戏

    文章目录 定制按钮 生成雷区 主流程 Tkinter系列: GUI初步

  5. python一百行代码多少钱_用86行Python代码模拟太阳系

    Python代码模拟的太阳系,包括了水星(Mercury), 金星(Venus),地球(Earth),月球(Moon),火星(Mars) 上面的动画是我用86行Python代码模拟的一个比较真实的太阳 ...

  6. python text insert()背景色_50行python代码写个计算器教程

    案例展示 计算器.gif 你能学到 input 用户输入 print输出 tkinter图形界面 python运算符号 基础知识准备 运算符号 数字运算,求和我们使用了加号 (+)运算符,除此外,还有 ...

  7. python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏

    集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...

  8. 10行 python 代码做出哪些酷炫的事情?

    来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...

  9. DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现

    作者 | Samuel Noriega 译者 | Freesia 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]最近,谷歌 DeepMInd 发表论文( DRAW: ...

最新文章

  1. android 桌面提醒功能,安卓手机桌面上使用的工作提醒软件选择哪个?
  2. 8个适合用来练手的SpringBoot开源项目
  3. linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志
  4. 【转载】只有程序员才能看懂的幽默
  5. getcwd和pwd为什么不一样_农村医保,为什么每个地区收费不一样?
  6. 如何正确的通过 C++ Primer 学习 C++?(转自知乎)
  7. 超声和免疫学指标的特征能否反映RA临床缓解的表型?[EULAR2015_THU0121]
  8. java文件读写的基本类_java常用工具类(三)—— 文件读取的操作类
  9. order是mysql系统关键字_MySQL数据库如何使用“ORDER BY”关键字对查询结果进行排序呢?...
  10. go interface 转 string_跟我一起学习go语言,map「string」interface「」代码示例
  11. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
  12. Win10 多出显示器无法删除的“通用非即插即用监视器”问题解决,intel hd graphics 4600 driver win 10
  13. 基于yolo3 与crnn 实现中文自然场景文字检测及识别
  14. 流程判断-三目运算-for循环
  15. iOS 苹果登录(第三方登录)
  16. 中画幅相机焦距水平视角_摄影中的“中画幅”是什么?
  17. 【Ubuntu】Ubuntu 20.04安装Python3.7
  18. 鸡尾酒问题,最小二乘法和范数的思考
  19. CodeForces - 1005A . Tanya and Stairways
  20. 准确率99.9%的离线IP地址定位库

热门文章

  1. 摩拜推AI平台"魔方" 300万辆单车背后谁在调度?
  2. Py2neo的基本用法
  3. 【ESP32 S2 烧录AT固件 串口与USB两种方式】
  4. C++常用库函数 C函数库 cstdio
  5. 零基础学Python--------第2章 Python语言基础
  6. STM32的串口接收和memset使用方法
  7. 【资源分享】2009版大陆汉语常用字.txt下载
  8. 想进互联网行业该如何选择岗位?
  9. mysql 释放结果结_mysql_free_result() 函数释放结果内存,返回的数据只有布尔类型( )。...
  10. MFC下指示灯的实现