python实现倒计时小工具


Posted in Python onJuly 29, 2019

本文实例为大家分享了python实现倒计时小工具的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python
# coding=utf-8
 
import threading
import time
import Queue
from Tkinter import *
import tkMessageBox
import logging
logging.basicConfig(level=logging.INFO)
 
## Communication queue
commQueue = Queue.Queue()
g_time = 0
 
## Function run in thread
def timeThread():
 global g_time
 g_time = timeVar.get() * 60
 while 1:
 logging.info("线程放入队列:%d".decode("utf-8") % g_time)
 commQueue.put(g_time)
 try:
  root.event_generate('<<TimeChanged>>', when='tail')
 except TclError:
  break
 time.sleep(1)
 g_time -= 1
 if g_time==-1:
  begin_btn["fg"] = "black"
  clockVar.set("开始计时")
  break
 
def timeChanged(event):
 x = commQueue.get()
 logging.info("获取队列:%d".decode("utf-8") % x)
 minits = x//60
 seconds = x%60
 s = "剩余时间 {:02}:{:02}".format(minits, seconds)
 begin_btn["fg"] = "blue"
 clockVar.set(s)
 if x==0:
  tkMessageBox.showinfo("提醒","时间已到")
 
 
def clock_func(*args):
 global g_time
 if threading.activeCount()>1:
 g_time = timeVar.get() * 60
 else:
 th=threading.Thread(target=timeThread)
 th.start()
 
## Create main window
root = Tk()
root.title("计时工具")
root.geometry("180x95-0-45")
root.resizable(width=FALSE,height=FALSE)
root.wm_attributes("-topmost",1)
frame = Frame(root)
frame.pack()
Label(frame,text="设定时间间隔").grid(row=1,column=2)
timeVar = IntVar()
clockVar = StringVar()
time_entry = Entry(frame, textvariable=timeVar, width=8)
time_entry["justify"] = "center"
time_entry.grid(row=2,column=2,sticky="W,E")
begin_btn = Button(frame,textvariable=clockVar,command=clock_func)
begin_btn.grid(row=3,column=2)
timeVar.set(8)
begin_btn["fg"] = "black"
clockVar.set("开始计时")
 
for child in frame.winfo_children():
 child.grid_configure(pady=3)
 
time_entry.focus()
root.bind('<<TimeChanged>>', timeChanged)
root.bind("<Return>",clock_func)
root.mainloop()

小编再为大家分享一段代码:Python窗口倒计时

# Countdown using Tkinter 
from tkinter import *
import time
import tkinter.messagebox
 
class App:
 def __init__(self,master):
  frame = Frame(master)
  frame.pack()
  self.entryWidget = Entry(frame)
  self.entryWidget["width"] = 15
  self.entryWidget.pack(side=LEFT)
  self.hi_there = Button(frame, text="开始", command=self.start)
  self.hi_there.pack(side=LEFT)
  self.button = Button(frame, text="退出", fg="red", command=frame.quit)
  self.button.pack(side=LEFT)
  
 def start(self):
  text = self.entryWidget.get().strip()
  if text != "":
   num = int(text)
   self.countDown(num)
  
 def countDown(self,seconds):
  lbl1.config(bg='yellow')
  lbl1.config(height=3, font=('times', 20, 'bold'))
  for k in range(seconds, 0, -1):
   if k == 30:
    print("\a")
   if k== 29:
    print("\a")
   if k== 28:
    print("\a")
   lbl1["text"] = k
   root.update()
   time.sleep(1)
  lbl1.config(bg='red')
  lbl1.config(fg='white')
  lbl1["text"] = "时间到!"
  tkMessageBox.showinfo("时间到!","时间到!")
 
 def GetSource():
  get_window = Tkinter.Toplevel(root)
  get_window.title('Source File?')
  Tkinter.Entry(get_window, width=30,
      textvariable=source).pack()
  Tkinter.Button(get_window, text="Change",
      command=lambda: update_specs()).pack()
 
root = Tk()
root.title("Countdown")
lbl1 = Label()
lbl1.pack(fill=BOTH, expand=1)
app = App(root)
root.mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现将汉字转换成汉语拼音的库
May 05 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
pygame实现弹力球及其变速效果
Jul 03 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Python提取频域特征知识点浅析
Mar 04 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
python随机生成库faker库api实例详解
Nov 28 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
django rest framework 实现用户登录认证详解
Jul 29 #Python
pycharm重命名文件的方法步骤
Jul 29 #Python
PyQt5实现暗黑风格的计时器
Jul 29 #Python
Python Django 实现简单注册功能过程详解
Jul 29 #Python
Django models.py应用实现过程详解
Jul 29 #Python
pycharm中显示CSS提示的知识点总结
Jul 29 #Python
pandas 如何分割字符的实现方法
Jul 29 #Python
You might like
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
ionic2中使用自动生成器的方法
2018/03/04 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
Python中的Numpy入门教程
2014/04/26 Python
python读取文件名称生成list的方法
2018/04/27 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python tkinter canvas使用实例
2019/11/04 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
运动会通讯稿100字
2014/01/31 职场文书
决心书标准格式
2014/03/11 职场文书
竞选班委演讲稿
2014/04/28 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android