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装饰器decorator介绍
Nov 21 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
基于django传递数据到后端的例子
Aug 16 Python
Pyqt5自适应布局实例
Dec 13 Python
浅谈django channels 路由误导
May 28 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
pandas针对excel处理的实现
Jan 15 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
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php上传文件常见问题总结
2015/02/03 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
php实现留言板功能
2017/03/05 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
深入理解python多进程编程
2016/06/12 Python
TensorFlow变量管理详解
2018/03/10 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
python 中xpath爬虫实例详解
2019/08/26 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
电大本科自我鉴定
2014/02/05 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
社区干部培训心得体会
2016/01/06 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书