想找一个桌面待办事项提醒的软件,找了好久都没有找到合适的,现有软件的提醒时间都只是精确到上下午或晚上,没有能精确到分钟,便想着自己做一个,这样子还能顺带加强自己对python的学习。

功能目标:输入时间和待办事项内容后会在指定时间弹窗提示。主要使用Timer和tkinter这两个python自带的库,一是方便无需再下载,另一个是方便封装

因为是新手,所以代码过于冗余,等有空再简化修改吧

import time
from datetime import datetime
from threading import Timer
import threading
from tkinter import ttk
from tkinter import *#创建显示窗口
window = Tk()
window.title("日程提醒")#定义输入时间以及其位置
inputmessageyear = Label(window, text = "年份") #年份
inputmessageyear.grid(column = 0, row = 0)
inputyear = Spinbox(window, from_ = 2022, to=  3000)
inputyear.grid(column = 1,row = 0)inputmessagemonth = Label(window, text = "月份") #月份
inputmessagemonth.grid(column = 0, row = 1)
inputmonth = Spinbox(window, from_ = 1, to = 12)
inputmonth.grid(column = 1, row = 1)inputmessageday = Label(window, text = "日") #日
inputmessageday.grid(column = 0, row = 2)
inputday = Spinbox(window, from_ = 1, to = 31)
inputday.grid(column = 1, row = 2)inputmessagehour = Label(window, text = "小时") #小时
inputmessagehour.grid(column = 0, row = 3)
inputhour = Spinbox(window, from_ = 0, to = 60)
inputhour.grid(column = 1, row = 3)inputmessageminth = Label(window, text = "分钟") #分钟
inputmessageminth.grid(column = 0, row = 4, )
inputminth = Spinbox(window, from_ = 0, to = 60)
inputminth.grid(column = 1, row = 4)#输入文本(备忘录事件)
inputmessagetext = Label(window, text = "日程提示")
inputmessagetext.grid(column = 0,row = 5)
inputtext = Entry(window, width = 26)
inputtext.grid(column = 0, row = 6, columnspan = 2, rowspan = 2)#创建询问函数
def clicked():useyear = str(inputyear.get())#将输入时间转化为能与当地时间比较的标准格式,此处有些冗余,但懒得再改了usemon = str(inputmonth.get())useday = str(inputday.get())usehour = str(inputhour.get())usemin = str(inputminth.get())usedatetime = "{}{}{}{}{}{}{}{}{}".format(useyear, "-", usemon, "-", useday, "-", usehour, "-", usemin)usedate_time = datetime.strptime(usedatetime, '%Y-%m-%d-%H-%M')#此处print用于检测"""print(usedatetime,"clicked函数年内usedatetime输出正常")"""def tishi():global tbenditime = time.localtime(time.time())benditime1 = "{}{}{}{}{}{}{}{}{}".format(benditime.tm_year, "-", benditime.tm_mon, "-", benditime.tm_mday, "-", benditime.tm_hour, "-", benditime.tm_min, "-", benditime.tm_sec)local_time = datetime.strptime(benditime1, '%Y-%m-%d-%H-%M')print("输出benditime")  #测试用if local_time != usedate_time:print("输出tishi函数内的if输出正常")t = Timer(10, tishi)t.start()elif local_time == usedate_time:print("tishi函数内的elif输出正常")messageshow = Tk()messageshow.title("日程提醒")messageshow.geometry('300x300')messageshowtext = Label(messageshow, text = inputtext.get()) #获取输入文本信息并显示到新弹窗上messageshowtext.grid(column = 0, row = 1)messageshow.wm_attributes('-topmost', 1) #将tkinter置顶于最前messageshow.mainloop()t = threading.Timer(10, tishi)t.start()
#添加确定按钮
confirmbutton = Button(window, text = "确定", command = clicked)
confirmbutton.grid(column = 1, row = 8)window.mainloop()

在编写时主要遇到两个难题,一是如何将获取到的本地时间转化为与用户输入时间等同的字符串。为解决这一问题我采用了较为繁琐的方式:

benditime = time.localtime(time.time())benditime1 = "{}{}{}{}{}{}{}{}{}".format(benditime.tm_year, "-", benditime.tm_mon, "-", benditime.tm_mday, "-", benditime.tm_hour, "-", benditime.tm_min, "-", benditime.tm_sec)local_time = datetime.strptime(benditime1, '%Y-%m-%d-%H-%M')

应该还存在更为简约的表达方式,但能力有限只能留待以后摸索了

二是tkinter的Button始终无反应,我在程序内各处分别添加了几个print进行测试,最后发现居然是" command = clicked"被写成了" command = clicked()":

#添加确定按钮
confirmbutton = Button(window, text = "确定", command = clicked)
confirmbutton.grid(column = 1, row = 8)

多出来的一个"()"足足浪费了我两个小时,失之毫厘谬以千里。

之后采用puinstaller进行封装,成功运行。

纪念一下我人生中第一个成功封装运行的小程序。

python 日程(待办事项) 提醒简单小程序——基于Timer和tkinter相关推荐

  1. python简单的小程序_Python简单小程序---名片简易系统

    Python简单小程序---名片简易系统 主程序功能代码 import cards_tools while True: cards_tools.show_meun() action = int(inp ...

  2. 电脑待办事项提醒小工具下载

    很多人的电脑上都会有一些提醒类的小工具,以用来整合生活及工作中方方面面的信息,借助提醒类的小工具一方面可以帮助大家记录备忘事项,另一方面可提高大家按时完成工作任务的效率,在电脑上使用的待办事项提醒小工 ...

  3. 用python做一个数据查询软件_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

  4. python进行数据查询_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

  5. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  6. libvirt 用c语言编译,基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include #include int getDomainInfo(int id) { virConnectPtr conn = NULL; v ...

  7. python爱心代码_母亲节快到了,用Python给老妈写个祝福小程序吧~

    导 语 看到好多人留言问我咋好久没更新文章了,于是看了下上篇文章的发布日期,好吧确实挺久的,是该上线更一波文章了.想到母亲节快到了,不如就用Python给老妈写个祝福小程序吧~让我们愉快地开始吧~ 相 ...

  8. 驱动器中的软盘不对_在“提示”框中:基于位置的待办事项提醒,DIY软盘驱动器音乐以及易于访问的产品手册...

    驱动器中的软盘不对 Once a week we round up some great tips from the HTG tip box and share them with you; this ...

  9. 用Python写一个模拟qq聊天小程序的代码实例

    前言 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天 ...

最新文章

  1. os-cocos2d游戏开发基础-进度条-开发笔记
  2. Node.js 究竟是什么?(zz)
  3. mysql binlog日志查看及解码
  4. thymeleaf 获取yml中的值_Thymeleaf前后端传值 页面取值与js取值
  5. Oracle:lsnrctl start Timeout or Adapter error
  6. 清华同方计算机教程,清华同方电脑u盘重装系统win10教程
  7. paip.远程服务器返回错误 (417) Expectation Failed 的解决办法
  8. js加载flv格式视频
  9. python求两个向量的夹角
  10. 对标苹果开“旧机发布会”?罗永浩出任转转品牌推广大使
  11. 包干到户是最好的软件项目管理方法
  12. 乔布斯那些经典的激励我们的语录
  13. 中国国内如何使用chatgpt?
  14. 2022全国高职院校教师真实薪酬数据汇总
  15. 强网杯2018 - nextrsa - Writeup
  16. 上海网络教育统考计算机题库,计算机应用基础网络教育统考试题库(2018年真题)...
  17. java八种基础数据结构_8种常见数据结构及其Javascript实现
  18. Qt之线程的开始暂停恢复停止
  19. java毕业设计选题CRM客户关系管理系统[包运行成功]
  20. 手把手教你写专利申请书/怎样申请专利

热门文章

  1. scaner 从外网到内网域渗透
  2. 短视频如何做好数据分析 掌握数据分析技巧
  3. 三年级下册计算机课程工作计划,三年级数学下册教学工作计划
  4. Vue项目首页-热销推荐组件开发(7-6)
  5. 【Vuforia】最佳实践:支持作为模型目标(Model Targets)的对象和CAD模型
  6. 政务内网不能上网的解决办法
  7. 上有尧舜之君,下有尧舜之民
  8. 【音频处理】python将两个单声道wav音频合成一个双声道wav音频_立体声感
  9. 软件工程之QA管理(好软件系列二)
  10. idea启动过多导致C盘空间不足